Qt 之 QApplication
1、QApplication
QApplication类管理GUI程序的控制流和主要设置,是基于QWidget的,为此特化了QGuiApplication的一些功能,处理QWidget特有的初始化和结束收尾工作。
对于使用了Qt的任何GUI程序来说,不管何时何地有多少个Window,但只有一个QApplication对象,如果不是基于QWidget的程序,相应的则使用QGuiApplication,后者不依赖于Widget特有的库。
有些程序是不使用GUI的,通过命令行参数执行不同的任务而不用手动设置,这时使用QCoreApplication就够了,避免初始化不必要的GUI资源。
上面提到了只能有一个QApplication实例,其实就是Singleton模式,对象指针通过instance()静态函数获取,或者使用等效的qApp宏。QApplication的主要职责如下:
1、使用用户的桌面设置进行初始化,这些设置如palette()、font()、doubleClickInterval(),然后跟踪这些属性的变化,如用户通过某种配置面板修改了全局桌面设置。
2、处理事件,从窗口系统接收事件并派发到相应的Widget,使用sendEvent()和postEvent()函数可以派发事件。
3、处理命令行参数,设置内部状态。
4、定义GUI外观,外观由QStyle对象包装,运行时通过setStyle()函数进行设置。
5、设置颜色分配规则,对应的函数为setColorSpec()。
6、本地化字符串,函数为translate()。
7、提供了一些有用的对象,如desktop()、clipboard()函数。
8、知道Widget及Window,相应的函数为widgetAt()、topLevelWidgets()、closeAllWindows()。
9、管理鼠标光标,函数为setOverrideCursor()。
从上面可以看出,QApplication作了许多初始化工作,因此在任何其它的UI对象创建之前必须先创建QApplication对象,而且还可以通过命令行参数设置一些内部状态。
2、QGuiApplication
QApplication继承自QGuiApplication,后者是基于非QWidget的,提供了会话管理,用户退出时可以友好地终止程序,如果终止不了还可以取消对应的进程,甚至是保存程序的所有状态用于将来的会话,相关函数为isSessionRestored()、sessionId()、commitDataRequest()、saveDataRequest()。
3、QCoreApplication
QGuiApplication继承自QCoreApplication,后者不包括UI,一大核心功能是提供了event loop,这些event可以来自操作系统,如timer、网络事件,以及其它来源的event都可以被收发。调用exec()函数进入event loop,直到quit()函数调用时才退出,退出时发送aboutToQuit()信号,等同于exit(0)函数,sendEvent()函数立即处理事件,postEvent()函数把事件放入消息队列以等待后续处理,处于消息队列的的event还可以通过removePostedEvent()和sendPostedEvent()进行删除和立即处理。
与程序路径相关的有两个函数applicationDirPath()和applicationFilePath(),另外一个是库相关的,函数为libraryPaths()、setLibraryPaths()、addLibraryPath()、removeLibraryPath(),以及QLibrary类。
国际化、翻译相关的函数为translate(),以及installTranslator()和removeTranslator()。
获取命令行参数使用函数arguments(),专门处理命令行参数的类为QCommandLineParser。
为了保证兼容性,还要适当的设置语系setLocale()。
Qt 之 QApplication的更多相关文章
- [QT]给QApplication安装事件过滤器 app.installEventFilter
Qt的事件处理有5种级别: 1. 重写控件的事件处理函数:如重写keyPressEvent(),mousePressEvent()和paintEvent(),这是最常用的事件处理方法,我们已 ...
- QT 入门 -QApplication QPushButton QDialog Ui类型的手工使用
QT 1.工具 assistant 帮助文档 qtconfig QT配置工具 qmake QT的make与项目文件智能创建工具 uic UI界面的设计文件的编译工具 mo ...
- 【QT】QApplication简介
1.QApplication QApplication类管理GUI程序的控制流和主要设置,是基于QWidget的,为此特化了QGuiApplication的一些功能,处理QWidget特有的初始化和结 ...
- Qt 模拟鼠标点击(QApplication::sendEvent(ui->pushbutton, &event0);)
QPoint pos(0,0);QMouseEvent event0(QEvent::MouseButtonPress, pos, Qt::LeftButton, Qt::LeftButton, Qt ...
- (转)Qt中文手册 之 QApplication
QApplication管理GUI程序的控制流和主要设置. QApplication包含由窗口系统和其他来源处理过和发送过的主事件循环.它也处理应用程序的初始化和收尾工作,并提供对话管理.QAppli ...
- Qt实用小技巧(转)
原博网址:http://www.cnblogs.com/feiyangqingyun/archive/2010/12/06/1898143.html 1.如果在窗体关闭前自行判断是否可关闭答:重新实现 ...
- Qt之加载QSS文件
简述 Qt中关于样式的使用很常见,为了降低耦合性(与逻辑代码分离),我们通常会定义一个QSS文件,然后编写各种部件(例如:QLable.QLineEdit.QPushButton)的样式,最后使用QA ...
- Qt事件处理机制
研一的时候开始使用Qt,感觉用Qt开发图形界面比MFC的一套框架来方便的多.后来由于项目的需要,也没有再接触Qt了.现在要重新拾起来,于是要从基础学起. Now,开始学习Qt事件处理机制. 先给出原文 ...
- 【转】解读Qt 事件处理机制(上篇)
[转自]:http://mobile.51cto.com/symbian-272812.htm 在Qt中,事件被封装成一个个对象,所有的事件均继承自抽象类QEvent. 接下来依次谈谈Qt中有谁来产生 ...
随机推荐
- bzoj2337 XOR和路径——高斯消元
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2337 异或就一位一位考虑: x为到n的概率,解方程组即可: 考虑了n就各种蜜汁错误,所以索性 ...
- Cocos2dx+lua合适还是Cocos2dx+js合适?
问题: 开发cocos2dx手游Cocos2dx+lua合适还是Cocos2dx+js合适 百牛信息技术bainiu.ltd整理发布于博客园 回答: 作者:廖宇雷链接:https://www.zhih ...
- HBase之四--(2):spring hadoop 访问hbase
1. 环境准备: Maven Eclipse Java Spring 2. Maven pom.xml配置 <dependency> <groupId>org.apache ...
- adb logcat 查看日志 (转载)
转自:http://blog.csdn.net/xyz_lmn/article/details/7004710 使用 logcat 命令 查看和跟踪系统日志缓冲区的命令logcat的一般用法是: [a ...
- bzoj 4199: [Noi2015]品酒大会【后缀数组+单调栈+并查集】
用SA求出height数组,然后发现每个height值都有一个贡献区间(因为点对之间要依次取min) 用单调栈处理出区间,第一问就做完了 然后用并查集维护每个点的贡献(?),从大到小枚举height, ...
- bzoj 2599: [IOI2011]Race【点分治】
点分治,用一个mn[v]数组记录当前root下长为v的链的最小深度,每次新加一个儿子的时候都在原来儿子更新过的mn数组里更新ans(也就是查一下mn[m-dis[p]]+de[p]) 这里注意更新和初 ...
- poj 1733 Parity game【hash+带权并查集】
hash一下然后用带权并查集做模2下的前缀和 #include<iostream> #include<cstdio> #include<map> #include& ...
- c#数据类型和类型转换
C# 数据类型 在 C# 中,变量分为以下几种类型: 值类型(Value types) 引用类型(Reference types) 指针类型(Pointer types) 值类型(Value type ...
- Lightoj 1038 - Race to 1 Again (概率DP)
题目链接: Lightoj 1038 - Race to 1 Again 题目描述: 给出一个数D,每次可以选择数D的一个因子,用数D除上这个因子得到一个新的数D,为数D变为1的操作次数的期望为多少 ...
- Android课程设计第四天ListView运用
注意:课程设计只为完成任务,不做细节描述~ 效果图 <?xml version="1.0" encoding="utf-8"?> <Relat ...