一、简介:

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) 设置窗口图标尺寸

最新文章

  1. TextView字体阴影效果
  2. JS常用正则表达式
  3. 学习笔记-----Android的View绘制过程
  4. 用Backbone.js创建一个联系人管理系统(五)
  5. 一次简单的分析手机APK病毒木马
  6. ubuntu-15.04-server-i386.iso 安装 Oracle 11gR2 数据库
  7. IISExpress配置文件的一个坑
  8. Unity3D研究院编辑器之Editor的GUI的事件拦截
  9. VC让对话框显示就最大化
  10. php中echo、print、print_r、printf的返回值
  11. 在Mac OS X中搭建STM32开发环境(3)
  12. 【SPOJ 1182】 SORTBIT - Sorted bit squence (数位DP)
  13. PC-JS小技巧
  14. Redis解决强制关闭Redis快照导致不能持久化错误
  15. python3.6安装Scrapy
  16. phpstudy中的mysql
  17. linux配置https站点
  18. 怎样解决canvas 插件 和html 页面中的事件冲突问题 ?
  19. python chardet
  20. March 02nd, 2018 Week 9th Friday

热门文章

  1. Python读取word文档(python-docx包)
  2. Spring JDBC查询返回对象代码跟踪
  3. 重载(overload)、覆盖(override)和隐藏(hide)
  4. 《Hive编程指南》问题
  5. Webpack探索【1】--- 基础知识
  6. python爬虫之Selenium
  7. 用VirtualBox和vagrant在win7×64上搭建ruby on rails 开发环境
  8. 第一个Spring Boot程序启动报错了
  9. C#读取excel 找不到可安装的ISAM
  10. 目标检测--之RCNN