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 ...
随机推荐
- android greendao3.0 多表关联关系讲解(转)
转自:http://www.jianshu.com/p/dbec25bd575f 前言 之前用过数据库框架:realm.kjdb,今天准备实践学习一下greendao 3.0.greendao 3.0 ...
- Centos 初始化服务器防火墙没有启动找不到/etc/sysconfig/iptables
个人博客:https://blog.sharedata.info/ 具体步骤:添加规则然后重启防火墙自动生成防火墙文件1.iptables -P OUTPUT ACCEPT #添加出规则2.servi ...
- Pollard-Rho大整数拆分模板
随机拆分,简直机智. 关于过程可以看http://wenku.baidu.com/link?url=JPlP8watmyGVDdjgiLpcytC0lazh4Leg3s53WIx1_Pp_Y6DJTC ...
- CSS 布局实例系列(一)总结CSS居中的多种方法
使用 CSS 让页面元素居中可能是我们页面开发中最常见的拦路虎啦,接下来总结一下常见的几种居中方法吧. 1. 首先来聊聊水平居中: text-align 与 inline-block 的配合 就像这样 ...
- Jquery事件绑定的4中方式对比
bind()向匹配元素添加一个或多个事件处理器. 使用方式 $(selector).bind(event,data,function) event:必需项:添加到元素的一个或多个事件,例如 click ...
- Jquery实现loading效果
需要引入jquery和bootstrap相关包,然后把下面的代码复制进去就可以了: <div class="modal fade" id="loadingModal ...
- java面向对象入门之带参方法创建
/* Name :创建带参的方法 Power by :Stuart Date:2015.4.25 */ //创建Way类 class Way{ //Way类成员的基本变量 int add1=123; ...
- CryptoJS加密
<script type="text/javascript" src="CryptoJS/core.min.js"></script>& ...
- CentOS iSCSI服务器搭建------Target篇
先上服务器信息(当然是我YY的服务器.哈哈) [root@node ~]# cat /etc/redhat-release CentOS release 6.6 (Final) [root@node ...
- 一张图学习vim常用命令
一张图学习vim常用命令