一、简介:
1、QMainFrame类提供了应用程序的主窗口,因为它可以添加菜单、工具条、状态栏和停靠窗口,同时也支持单文档窗口和多文档窗口,这是它和其他窗口不一样的地方。
2、QMainFrame窗口必须添加中心组件,即调用setCentralWidget (self, QWidget widget)函数添加中心组件,否则该窗口无法正常显示。
二、添加菜单:
QMainFrame内部有一个QMenuBar属性,通过self.menuBar()获取,要添加菜单,就是在这个属性中添加
代码:
menuFile=self.menuBar().addMenu('文件')
action=QAction()
menuFile.addAction(action)
如果要添加自定义的菜单,可以调用setMenuBar (self, QMenuBar menubar)、setMenuWidget (self, QWidget menubar)两个函数添加,此时,窗口自带的菜单控件会被替换成自定义菜单控件。
三、添加工具栏:
由于窗口可以拥有多个工具栏,因此窗口提供了
-
addToolBar (self, Qt.ToolBarArea area, QToolBar toolbar)
-
addToolBar (self, QToolBar toolbar)
-
QToolBar addToolBar (self, QString title)
三个函数添加工具栏,这些函数返回一个QToolBar对象,调用addAction()添加工具栏项目。
Qt.ToolBarArea:
Constant | Value |
---|---|
Qt.LeftToolBarArea | 0x1 |
Qt.RightToolBarArea | 0x2 |
Qt.TopToolBarArea | 0x4 |
Qt.BottomToolBarArea | 0x8 |
Qt.AllToolBarAreas | ToolBarArea_Mask |
Qt.NoToolBarArea | 0 |
默认情况下,多个工具条是一行显示,函数QMainWindow.addToolBarBreak (self, Qt.ToolBarArea area = Qt.TopToolBarArea)可以使工具栏段行显示。
四、添加状态栏:
setStatusBar (self, QStatusBar statusbar) 构造一个QStatusBar,通过该函数添加状态栏
五、添加停靠窗口:
-
addDockWidget (self, Qt.DockWidgetArea area, QDockWidget dockwidget)
-
addDockWidget (self, Qt.DockWidgetArea area, QDockWidget dockwidget, Qt.Orientation orientation)
参数二Qt.DockWidgetArea表示停靠的位置,有六个值
Qt.LeftDockWidgetArea | 0x1 |
Qt.RightDockWidgetArea | 0x2 |
Qt.TopDockWidgetArea | 0x4 |
Qt.BottomDockWidgetArea | 0x8 |
Qt.AllDockWidgetAreas | DockWidgetArea_Mask |
Qt.NoDockWidgetArea | 0 |
参数三表示水平还是垂直停靠:Qt.Horizontal Qt.Vertical
QDockWidget *dockWidget = new QDockWidget(tr("Dock Widget"), this); dockWidget->setAllowedAreas(Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea); dockWidget->setWidget(dockWidgetContents); addDockWidget(Qt.LeftDockWidgetArea, dockWidget);
六、保存状态与恢复状态:
saveState()与restoreState():
在某些情况,我们想暂时的改变窗口的布局,在另外一种情况下又想恢复原始状态,此时这两个函数就用上了。
保存状态时保存主窗口停靠面板,状态栏、工具栏等位置信息,比如pycharm软件里有恢复默认窗口可能会用到这两个函数。
七、其他函数:
1.virtual QMenu *QMainWindow::createPopupMenu() 该函数
该函数用于创建上下文菜单。上下文菜单即右键点击主菜单、工具栏或者停靠窗口所生成的菜单,该菜单的菜单项可用于设置是否显示当前已经存在的工具条和停靠窗口。
该函数是虚函数,可重写以改变右键点击后出现的菜单。重写的时候,将函数内重生成的菜单返回出来,即可覆盖默认的上下文菜单。
2.void setIconSize(const QSize &iconSize)
该函数用于设置工具栏上图标的尺寸,由于工具栏图标尺寸只能比图标实际尺寸小或者相等,不能放大图标,因此该函数设定的图标尺寸不能大于图标的实际尺寸。
3.void setToolButtonStyle(Qt::ToolButtonStyle toolButtonStyle)
该函数设置工具栏上按钮的样式
Constant | Value | Description |
---|---|---|
Qt::ToolButtonIconOnly |
0 |
Only display the icon. |
Qt::ToolButtonTextOnly |
1 |
Only display the text. |
Qt::ToolButtonTextBesideIcon |
2 |
The text appears beside the icon. |
Qt::ToolButtonTextUnderIcon |
3 |
The text appears under the icon. |
Qt::ToolButtonFollowStyle |
4 |
Follow the style. |
4.setWindowIcon(const QIcon &) 设置窗口的图标
5.setIconSize(&QSize) 设置窗口图标尺寸