目录}

  • 前言
  • 正言
    • 误区
    • 正解

前言

这个需求耗费了我至少一个下午的时间,明明就是很简单的功能,但就是四笔实现不了,最终终是实现了,这里做一个记录。

正言

首先,先上效果图:

就是我上面画横线的地方,就是我最终要移过去的Action。
如果你们懒得看我的误区,就直接看正解即可,但我觉得误区这里还是值得看一下的。

误区

首先,最上面这个是QMenuBar。我这四个都是QAction。都是直接使用QMenuBar->addAction()就可以实现弄上去了。但问题来了,我现在要让其中的三个靠右啊?
首先,之前想的一直是将这几个Action加入布局之中,然后中间放一个弹簧就可以了,但这种方式最终是失败了。好像只要把这个Action放入布局之中, 我的最右边的那几个Action就会失效看不到了。这种方法这样就失败了。

正解

接下来列下几种解决的办法,但最前面的几种肯定是有它的局限性,所以我最后没有采用,不然,前面几种还是挺容易的。

  1. 首先,我弄了一个QWidget和一个QHBoxLayout,我把那最右边的三个QAction都加入这个QHBoxLayout之中,然后加入这个QWidget之中,这样,这三个QAction就被我圈在一起了,然后,我就使用QMenuBar->setConnerWidget(),将这个widget加入到这个QMenuBar之中了。这样,我们可以实现基本的效果,没啥问题。
  2. 但接下来,我又发现,不行啊,这样加的话,你的这个QMenuBar是没办法进行拖动,就类似你要拖动这个窗口,但点击这个QMenuBar是会拖动失败的,很难受,原因在这:就是当你将QMainWindow的最上层的title去掉之中,这个QMainWindow会失去它原来的属性,就是没办法进行拖动,放大缩小,这部分内容,我会在另一篇文章讲,但即使你实现了其他部分的放大缩小,这个地方也没有办法解决,因为这个地方它就是无法聚集到焦点。所以,我的解决办法如下:
    我最终还是选择使用QToolBar来作为这个界面的最上层,不然,实在搞不了啊。
    首先,我们使用了QToolBar来弄,那最前面的那个QMenu怎么办,我也找不到比较好的方法在QToolBar中来实现,最后,我使用的方法是:

自己new一个QMenuBar,然后将这个QMenu加入,然后,将这个QMenuBar加入到QToolBar的布局之中,放在最前面。
将一个可无限延伸的QWidget加入在中间进行撑开:`QWidget *spacer = new QWidget(this);
spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
然后剩下就将最右边的那几个按钮逐一加入到QToolBar之中即可,这方法可行。然后,你的QMenuBar还要调整一下长度,不然,你的QMenuBar如果太长也是拖动不了。这个长度的设置方式为:
QMenuBar *menuBar = new QMenuBar();menuBar->setFixedWidth(70);

这样,最终就可以实现想要的效果了。 关于这个QToolBar的下面放QMenuBar的代码如下:

QToolBar *menuToolBar = this->addToolBar("MenuToolBar");menuToolBar->setProperty("class","menuToolBarQss");menuToolBar->setStyleSheet("border:none");menuToolBar->setMovable(false);QMenuBar *menuBar = new QMenuBar();menuBar->setFixedWidth(70);menuBar->setProperty("class","m_pMenuBarQss");m_pFileMenu = new QMenu("File");QAction *m_pActionSaveParameter = m_pFileMenu->addAction("Save Parameter");m_pActionSaveParameter->setProperty("class","m_pActionSaveParameterQss");menuBar->addMenu(m_pFileMenu);menuToolBar->addWidget(menuBar);QWidget *spacer = new QWidget(this);spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);menuToolBar->addWidget(spacer);QAction *m_pActionMinWidget = new QAction(this);m_pActionMinWidget->setToolTip("Min Widget");m_pActionMinWidget->setIcon(QIcon("./icon/white_minWidget.png"));                     //设置图标,冒号表示该文件处于资源文件指定的地方menuToolBar->addAction(m_pActionMinWidget);m_pActionMaxWidget = new QAction(this);m_pActionMaxWidget->setToolTip("Max Widget");                                       //信息提示,当鼠标靠近这个项,便会提示信息m_pActionMaxWidget->setIcon(QIcon("./icon/white_maxWidget.png"));                     //设置图标,冒号表示该文件处于资源文件指定的地方menuToolBar->addAction(m_pActionMaxWidget);QAction *m_pActionCloseWidget = new QAction(this);m_pActionCloseWidget->setToolTip("Close Widget");                                   //信息提示,当鼠标靠近这个项,便会提示信息m_pActionCloseWidget->setIcon(QIcon("./icon/white_closeWidget.png"));menuToolBar->addAction(m_pActionCloseWidget);this->addToolBarBreak();

如何让MenuBar的菜单栏靠右对齐?相关推荐

  1. word公式编号怎么右对齐_8个能帮你大忙的Word技巧,建议花几分钟学起来!

    一.排版技巧 1.页面布局 Word文档中,有一个[页面布局]设置,大家可以通过这个设置来排版哦.在[页面布局]中,大家可以完成这些操作:纸张方向.文字方向.页边距.分栏等等,另外大家还可以直接在里面 ...

  2. 【问题处理】Word修改页边距后,目录没有右对齐

    1.问题描述:Word将普通边距修改为窄边距之后,目录没有右对齐 1)普通边距下的目录如图所示: 2)修改为窄边距之后的目录如图所示: 2.问题解决方法: 1)菜单栏选择:"引用" ...

  3. 论文中公式居中编号右对齐以及左下角基金的插入方法

    记性不好,每次用到都现搜一遍,想记下来方便以后查阅 (1)公式居中,编号右对齐 菜单栏:视图--标尺,调出标尺 光标停于公式行使公式居中,在标尺上标记公式左侧位置,并在右侧标记编号位置(下图 是公式编 ...

  4. mathtype中手工实现公式编号右对齐及快捷键

    转自:http://blog.sina.com.cn/s/blog_656681710100l3it.html (转自:http://klqingshui.blog.163.com/blog/stat ...

  5. python使用wx绘界面,布局自已的toolbar,使控件右对齐

    正确的右对齐方法: panel = wx.Panel(self) button = wx.Button(panel, label = _(u'确定'), size = (60, 28))hbox = ...

  6. html中li右对齐的方法

    负责的系统中有一个横向的菜单栏,七八个项挨个排在一起,是一个个<li>的结构.今天想在这个菜单栏里增加一个"帮助"链接,因为功能的分类不同,所以希望这个帮助链接虽然也在 ...

  7. input type右对齐与只读的

    右对齐的 <input type="text" style="background:'#efefef'; text-align:right" readon ...

  8. R语言ggplot2可视化使用vjust和hjust参数对齐图像中的文本注释信息(左对齐、右对齐、居中)实战

    R语言ggplot2可视化使用vjust和hjust参数对齐图像中的文本注释信息(左对齐.右对齐.居中)实战 目录

  9. 将选定的文本对象左对齐、右对齐或对中

    ;; ;;程序名称:对象水平对齐程序 ;;执行命令:TXTAL ;;程序功能:将选定的对象左对齐.右对齐或对中. ;; (defun c:TXTAL(/ selobjs oldcmdecho) ;定义 ...

最新文章

  1. mysql-cluster集群原理介绍和搭建步骤(四个data/sql节点) (转)
  2. Linux_进程管理计划任务
  3. vbs修改office设置_E002 Ruby 写入数据 【 =gt; Office 】
  4. USART_GetITStatus和USART_GetFlagStatus的区别
  5. mysql json 创建索引_MySQL · 最佳实践 · 如何索引JSON字段
  6. OGNL、EL表达式——Struts
  7. 关于球谐函数一些初步的理解
  8. 2019.03.25 bzoj4539: [Hnoi2016]树(主席树+倍增)
  9. w3school在线学习教程 http://www.w3school.com.cn/
  10. Spring Cloud和Spring Boot高级视频
  11. [C++]一个拥有音乐播放器所有基本功能的音乐库
  12. Excle 取前几位数、中间几位数、后几位数的方法
  13. 20190926CF训练
  14. python爬虫怎么爬小说_Python 新手] 爬虫练习:爬取起点中文网的小说排行并存入 excel 表格中...
  15. Flash中使用Filereference上传文件的一些注意事项
  16. 视频教程-SpringBoot+MongoDB+Vue前后分离-Java
  17. Linux网络与进程管理
  18. ubuntu 试用ibus云拼音
  19. 计算机科学与技术学士论文,计算机科学与技术毕业论文
  20. 雨水冲刷沙堡模型——matlab元胞自动机

热门文章

  1. AirDisk-Q3X作为移动硬盘模式连接电脑拷贝数据
  2. 福州计算机就业形势2017,2017上半年福州就业情况分析及下半年就业形势预判
  3. 微软发布会精华回顾:“台式电脑”抢了风头
  4. Qlik潘应麒:大数据时代下的现代分析学
  5. ESP32C3 LED PWM使用和ESP32差异说明
  6. 树莓派ADC(ADS1115)读取Voltage Sensor(电压检测模块)
  7. 如何一次高效的插入200MB(50万条)的insert语句
  8. CSP 复赛注意事项
  9. 01什么是FPGA?
  10. 麒麟系统安装clickhouse