精通Qt4编程
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第4章 程序主窗口——QMainWindow

在前面几章中,学习了Qt的一些基础知识。在这一章,将学习使用Qt的主窗口部件QMainWindow进行GUI应用程序开发。通过一个简单文本编辑器的例子,学习使用GUI用户界面主窗口的菜单、工具栏、状态栏等。

4.1 QMainWindow主窗口框架

Qt的QMainWindow类提供了一个应用程序主窗口,包括一个菜单栏(menu bar)、多个工具栏(tool bars)、多个锚接部件(dock widgets)、一个状态栏(status bar)以及一个中心部件(central widget),其界面布局如图4-1所示。

图4-1 Qt主窗口框架布局

1.菜单栏

菜单是一系列命令的列表。为了实现菜单、工具栏按钮、键盘快捷方式等命令的一致性,Qt使用动作(Action)来表示这些命令。Qt的菜单就是由一系列的QAction动作对象构成的列表。而菜单栏则是包容菜单的面板,它位于主窗口的顶部、主窗口标题栏的下面。一个主窗口最多只有一个菜单栏。

2.状态栏

状态栏通常显示GUI应用程序的一些状态信息,它位于主窗口的最底部。可以在状态栏上添加、使用Qt窗口部件。一个主窗口最多只有一个状态栏。

3.工具栏

工具栏是由一系列的类似于按钮的动作排列而成的面板,它通常有一些经常使用的命令(动作)组成。工具栏的位置处在菜单栏的下面、状态栏的上面,工具栏可以停靠在主窗口的左、右、上、下四个方向上。一个主窗口可以包含多个工具栏。

4.锚接部件

锚接部件作为一个容器来使用,以包容其他窗口部件来实现某些功能。比如,Qt设计器的属性编辑器、对象监视器等都是由锚接部件包容其他的Qt窗口部件来实现的。它处在工具栏的内部,可以作为一个窗口自由地浮动在主窗口的上面,也可以像工具栏一样停靠在主窗口的左、右、上、下四个方向上。一个主窗口可以包含多个锚接部件。

5.中心部件(Central Widget)

中心部件处在锚接部件的内部、主窗口的中心。一个主窗口只有一个中心部件。

注意,主窗口QMainwindow具有自己的布局管理器,因此在QMainWindow窗口上设置布局管理器或者创建一个父窗口部件为QMainWindow的布局管理器都是不允许的。但可以在主窗口的中心部件上设置布局管理器。

为了控制主窗口工具栏和锚接部件的显隐,在默认情况下,QMainWindow主窗口提供了一个上下文菜单(Context Menu)。通常,通过在工具栏或锚接部件上单击鼠标右键就可以激活该上下文菜单;也可以通过函数CMainWindow::createPopupMenu() 来激活该菜单。此外,还可以重写CMainWindow::createPopupMenu()函数,实现自定义的上下文菜单。