QMainFrame类
一、简介:
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) 设置窗口图标尺寸
QMainFrame类的更多相关文章
- Java类的继承与多态特性-入门笔记
相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...
- C++ 可配置的类工厂
项目中常用到工厂模式,工厂模式可以把创建对象的具体细节封装到Create函数中,减少重复代码,增强可读和可维护性.传统的工厂实现如下: class Widget { public: virtual i ...
- Android请求网络共通类——Hi_博客 Android App 开发笔记
今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库
在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...
- ASP.NET Core 折腾笔记二:自己写个完整的Cache缓存类来支持.NET Core
背景: 1:.NET Core 已经没System.Web,也木有了HttpRuntime.Cache,因此,该空间下Cache也木有了. 2:.NET Core 有新的Memory Cache提供, ...
- .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类
.NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类 0x00 为什么要引入扩展方法 有的中间件功能比较简单,有的则比较复杂,并且依赖其它组件.除 ...
- Java基础Map接口+Collections工具类
1.Map中我们主要讲两个接口 HashMap 与 LinkedHashMap (1)其中LinkedHashMap是有序的 怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...
- PHP-解析验证码类--学习笔记
1.开始 在 网上看到使用PHP写的ValidateCode生成验证码码类,感觉不错,特拿来分析学习一下. 2.类图 3.验证码类部分代码 3.1 定义变量 //随机因子 private $char ...
- C# 多种方式发送邮件(附帮助类)
因项目业务需要,需要做一个发送邮件功能,查了下资料,整了整,汇总如下,亲测可用- QQ邮箱发送邮件 #region 发送邮箱 try { MailMessage mail = new MailMess ...
随机推荐
- JSP隐式对象是JSP容器为每个页面提供的Java对象
JSP 隐式对象 JSP隐式对象是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明.JSP隐式对象也被称为预定义变量. JSP所支持的九大隐式对象: 对象 描述 reque ...
- bzoj3992【SDOI2015】序列统计
3992: [SDOI2015]序列统计 Time Limit: 30 Sec Memory Limit: 128 MB Submit: 673 Solved: 327 [Submit][Stat ...
- esper 附录A
A2 select irstream symbol, volume, price from MarketDate.win.time(5.5 sec) seconds seconds seconds s ...
- 【问题】:spring cloud sleuth日志组件冲突问题
在使用spring cloud sleuth的时候,启动工程报错如下: 根据错误信息明显就是jar包冲突,spring boot默认用的是logback,所以移除其中一个依赖就可以了,修改pom依赖为 ...
- android中实现毛笔效果(View 中画图)
近期有一个项目设计一个APP实现通过触摸屏实现毛笔写字效果.传统的绘画板程序直接通过Path的moveTo和LineTo便可实现简单的线条绘画程序.然而要达到毛笔的笔锋效果则须要更为具体点的设计.我的 ...
- html5-框架网站
1.html5+:http://www.html5plus.org/ 2.hbuilder:http://www.dcloud.io/ 3.mui:http://dev.dcloud.net.cn/m ...
- 今天在网上查看了一个socket程序,运行的时候一直报错,经过队友解决?
1.首先是问题代码ip_port = ('192.168.12.2',8001)2.上边的代码本身没有问题,但是必须经过修改自己本机的局域网IP地址才能顺利链接请参考上一篇blog的地址,查看本机的i ...
- 基于SQLAIchemy的Flask目录
预先知识 flask的基本使用 快速搭建开发的目录,以后我们在用Flask开发项目的时候可以直接用这个目录,不需要再自己创建. flask-sqlalchemy flask-sqlalchemy相当于 ...
- 如何禁止eclipse对js文件的校验(building validate)
在项目(project)上点击右键,依次选择1.Select Properties -> JavaScript -> Include Path2.Select Source tab. ( ...
- Spring声明式事务管理与配置介绍
转至:http://java.9sssd.com/javafw/art/1215 [摘要]本文介绍Spring声明式事务管理与配置,包括Spring声明式事务配置的五种方式.事务的传播属性(Propa ...