如何让MenuBar的菜单栏靠右对齐?
目录}
- 前言
- 正言
- 误区
- 正解
前言
这个需求耗费了我至少一个下午的时间,明明就是很简单的功能,但就是四笔实现不了,最终终是实现了,这里做一个记录。
正言
首先,先上效果图:
就是我上面画横线的地方,就是我最终要移过去的Action。
如果你们懒得看我的误区,就直接看正解即可,但我觉得误区这里还是值得看一下的。
误区
首先,最上面这个是QMenuBar。我这四个都是QAction。都是直接使用QMenuBar->addAction()
就可以实现弄上去了。但问题来了,我现在要让其中的三个靠右啊?
首先,之前想的一直是将这几个Action加入布局之中,然后中间放一个弹簧就可以了,但这种方式最终是失败了。好像只要把这个Action放入布局之中, 我的最右边的那几个Action就会失效看不到了。这种方法这样就失败了。
正解
接下来列下几种解决的办法,但最前面的几种肯定是有它的局限性,所以我最后没有采用,不然,前面几种还是挺容易的。
- 首先,我弄了一个QWidget和一个QHBoxLayout,我把那最右边的三个QAction都加入这个QHBoxLayout之中,然后加入这个QWidget之中,这样,这三个QAction就被我圈在一起了,然后,我就使用QMenuBar->setConnerWidget(),将这个widget加入到这个QMenuBar之中了。这样,我们可以实现基本的效果,没啥问题。
- 但接下来,我又发现,不行啊,这样加的话,你的这个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的菜单栏靠右对齐?相关推荐
- word公式编号怎么右对齐_8个能帮你大忙的Word技巧,建议花几分钟学起来!
一.排版技巧 1.页面布局 Word文档中,有一个[页面布局]设置,大家可以通过这个设置来排版哦.在[页面布局]中,大家可以完成这些操作:纸张方向.文字方向.页边距.分栏等等,另外大家还可以直接在里面 ...
- 【问题处理】Word修改页边距后,目录没有右对齐
1.问题描述:Word将普通边距修改为窄边距之后,目录没有右对齐 1)普通边距下的目录如图所示: 2)修改为窄边距之后的目录如图所示: 2.问题解决方法: 1)菜单栏选择:"引用" ...
- 论文中公式居中编号右对齐以及左下角基金的插入方法
记性不好,每次用到都现搜一遍,想记下来方便以后查阅 (1)公式居中,编号右对齐 菜单栏:视图--标尺,调出标尺 光标停于公式行使公式居中,在标尺上标记公式左侧位置,并在右侧标记编号位置(下图 是公式编 ...
- mathtype中手工实现公式编号右对齐及快捷键
转自:http://blog.sina.com.cn/s/blog_656681710100l3it.html (转自:http://klqingshui.blog.163.com/blog/stat ...
- python使用wx绘界面,布局自已的toolbar,使控件右对齐
正确的右对齐方法: panel = wx.Panel(self) button = wx.Button(panel, label = _(u'确定'), size = (60, 28))hbox = ...
- html中li右对齐的方法
负责的系统中有一个横向的菜单栏,七八个项挨个排在一起,是一个个<li>的结构.今天想在这个菜单栏里增加一个"帮助"链接,因为功能的分类不同,所以希望这个帮助链接虽然也在 ...
- input type右对齐与只读的
右对齐的 <input type="text" style="background:'#efefef'; text-align:right" readon ...
- R语言ggplot2可视化使用vjust和hjust参数对齐图像中的文本注释信息(左对齐、右对齐、居中)实战
R语言ggplot2可视化使用vjust和hjust参数对齐图像中的文本注释信息(左对齐.右对齐.居中)实战 目录
- 将选定的文本对象左对齐、右对齐或对中
;; ;;程序名称:对象水平对齐程序 ;;执行命令:TXTAL ;;程序功能:将选定的对象左对齐.右对齐或对中. ;; (defun c:TXTAL(/ selobjs oldcmdecho) ;定义 ...
最新文章
- 5G时代渐行渐近 移动承载网络面临新挑战
- angularjs 导出excel php,AngularJS 导出Excel指令
- MySQL优化调优有没有做过_MySQL 调优/优化的 100 个建议
- Linux下C编程-----IO/文件操作 模拟linux ls程序显示文件系统树形结构(2)
- /usr/include/pcap/pcap.h源码
- 托马斯微积分10版积分简表101 公式修正
- MATLAB拟合函数
- vue3快速上手(尚硅谷视频笔记)
- js文本框设置必填项_显示隐藏js字段 设置必填非必填
- coreldraw x4被禁用怎么解决及不能使用序列号警告办法
- 解决Github下载速度慢的问题
- JAVA宠物爱心驿站计算机毕业设计Mybatis+系统+数据库+调试部署
- 拼多多店铺流量解析:这些流量入口你必须了解!
- PostgreSQL安装、验证安装、pgAdmin初步简单使用
- 计算机主板设计与应用说明,电脑主板的主要参数及其含义介绍
- php 读取mysql 返回xml_用php解析xml并保存到mysql
- LINUX新手入门及安装配置FAQ(http://bbs.blueidea.com/viewthread.php?tid=635906amp;page=)
- 坚叔:让科幻片的概念变成产品丨编程挑战赛 x 嘉宾分享
- 在体育方面计算机的应用,计算机技术在高校体育教学中的应用
- 程序员的内斗: 测试和开发干仗, 已经到用鼠标线勒脖子的程度