Qt 学习之路 2(12):菜单栏、工具栏和状态栏
来源:互联网 发布:儿童票卧铺半价算法 编辑:程序博客网 时间:2024/05/21 12:44
在之前的《添加动作》一文中,我们已经了解了,Qt 将用户与界面进行交互的元素抽象为一种“动作”,使用QAction
类表示。QAction
可以添加到菜单上、工具栏上。期间,我们还详细介绍了一些细节问题,比如资源文件的使用、对象模型以及布局管理器。这一节则是详细介绍关于菜单栏、工具栏以及状态栏的相关内容。
我们假设窗口还是建立在QMainWindow
类之上,这会让我们的开发简单许多。当然,在实际开发过程中,QMainWindow
通常只作为“主窗口”,对话框窗口则更多地使用QDialog
类。我们会在后面看到,QDialog
类会缺少一些QMainWindow
类提供方便的函数,比如menuBar()
以及toolBar()
。
下面还是回到《添加动作》一文中的代码片段:
我们看到,使用menuBar()
函数,Qt 为我们创建了一个菜单栏。menuBar()
是QMainWindow
提供的函数,因此你是不会在QWidget
或者QDialog
中找到它的。这个函数会返回窗口的菜单栏,如果没有菜单栏则会新创建一个。这也就解释了,为什么我们可以直接使用menuBar()
函数的返回值,毕竟我们并没有创建一个菜单栏对象啊!原来,这就是menuBar()
为我们创建好并且返回了的。
Qt 中,表示菜单的类是QMenuBar
(你应该已经想到这个名字了)。QMenuBar
代表的是窗口最上方的一条菜单栏。我们使用其addMenu()
函数为其添加菜单。尽管我们只是提供了一个字符串作为参数,但是 Qt 为将其作为新创建的菜单的文本显示出来。至于 & 符号,我们已经解释过,这可以为菜单创建一个快捷键。当我们创建出来了菜单对象时,就可以把QAction
添加到这个菜单上面,也就是addAction()
函数的作用。
下面的QToolBar
部分非常类似。顾名思义,QToolBar
就是工具栏。我们使用的是addToolBar()
函数添加新的工具栏。为什么前面一个是menuBar()
而现在的是addToolBar()
呢?因为一个窗口只有一个菜单栏,但是却可能有多个工具栏。如果我们将代码修改一下:
我们看到,现在有两个工具栏了:
工具栏可以设置成固定的、浮动的等等,具体设置可以参考 Qt 文档。
前面我们说过,使用QAction::setStatusTip()
可以设置该动作在状态栏上的提示文本。但我们现在把鼠标放在按钮上,是看不到这个提示文本的。原因很简单,我们没有添加一个状态栏。怎么添加呢?类似前面的QMainWindow::menuBar()
,QMainWindow
有一个statusBar()
函数。让我们把这个函数添加上去:
然后编译运行一下:
我们添加了一个孤零零的statuBar()
显得不伦不类,但是,同前面的menuBar()
的实现类似,这个函数会返回一个QStatusBar
对象,如果没有则先创建再返回。
QStatusBar
继承了QWidget
,因此,我们可以将其它任意QWidget
子类添加到状态栏,从而实现类似 Photoshop 窗口底部那种有比例显示、有网格开关的复杂状态栏。有关QStatusBar
的更多信息,请参考 Qt 文档。
对于没有这些函数的QDialog
或者QWidget
怎么做呢?要记得,QToolBar
以及QStatusBar
都是QWidget
的子类,因此我们就可以将其结合布局管理器添加到另外的QWidget
上面。QLayout
布局提供了setMenuBar()
函数,可以方便的添加菜单栏。具体细节还是详见文档。
至此,我们已经将组成窗口元素介绍过一遍。结合这些元素以及布局管理,我们就应该可以实现一个简单的通用的窗口。当我们完成窗口布局之后,我们就可以考虑向其中添加功能。这就是我们后面章节的内容。
=============================================================
===源博客地址:https://www.devbean.net/2012/08/qt-study-road-2-catelog/===
=============================================================
- Qt 学习之路 2(12):菜单栏、工具栏和状态栏
- Qt学习之八:菜单栏、工具栏和状态栏
- Qt学习之路十四(QMainWindow菜单栏和工具栏)
- QT5 学习之路16---菜单栏、工具栏和状态栏
- PyQt5学习记录(2)---QMainWindow菜单栏、状态栏和工具栏
- 菜单栏、工具栏和状态栏
- Qt实现菜单栏,工具栏,状态栏
- Qt实现菜单栏,工具栏,状态栏
- Qt中实现简单的菜单栏,工具栏和状态栏!
- QT工具栏和菜单栏
- QT学习笔记05QMainWindow(菜单栏+工具栏+状态栏+浮动窗口)
- 菜单栏和工具栏-2
- 对话框(dialog)、菜单栏、工具栏、状态栏
- Qt中建菜单栏和工具栏(泊松编辑)
- Qt mainWindow添加状态栏,菜单栏,工具栏的Action方法
- Qt mainWindow添加状态栏,菜单栏,工具栏的Action方法
- 添加菜单栏、工具栏按钮、状态栏,并将菜单栏和工具栏关联
- PyQt5学习第一发(基础窗口创建 菜单栏 工具栏 状态栏 )
- 在ubuntu上构建并配置Spark的IDE开发环境
- 王爽 《汇编语言》 读书笔记 十六 直接定址表
- IO复用
- 了解hadoop与分布式系统
- STL-set/multiset容器
- Qt 学习之路 2(12):菜单栏、工具栏和状态栏
- zookeeper status出现error的解决方案
- Unity_设计模式_观察者模式_08
- 在windows 7 安装 JDK1.7 配置环境变量(配置3个)
- HDU1201 水题
- GPS经纬度转化为百度地图/Google坐标及互转方案
- C++继承与派生
- 网络心跳时间的自适应算法
- 机器学习中的必修数学(三)