QApplication类管理图形用户界面应用程序的控制流和主要设置。它包含主事件循环,在其中来自窗口系统和其它资源的所有事件被处理和调度。也用于处理应用程序的初始化和结束,并且提供对话管理。它也处理绝大多数系统范围和应用程序范围的设置。

任何一个使用Qt的图形界面的程序,都都必须有一个QApplication对象,而且只能有一个。

QApplication对象是可以通过全局变量qApp访问。它的负责的主要范围有:

1、使用用户的桌面设置,例如palette()、font()和doubleClickInterval()来初始化应用程序。如果用户改变全局桌面,例如通过一些控制面板,它会对这些属性保持跟踪。
2、执行事件处理,也就是说它从低下的窗口系统接收事件并且把它们分派给相关的窗口部件。通过使用sendEvent()和postEvent(),你可以发送你自己的事件到窗口部件。
3、分析命令行参数并且根据它们设置内部状态。关于这点的详细情况请参考下面的构造函数文档。
4、定义由QStyle对象封装的应用程序的观感。在运行状态下,可以通过setStyle()来改变。
5、指定应用程序如何分配颜色。
7、定义默认文本编码并且提供通过translate()用户可见的本地化字符串。
8、提供一些像desktop()和clipboard()这样的魔术般的对象。
9、它知道应用程序的窗口。你可以使用widgetAt()来询问在一个确定点上存在哪个窗口部件,得到一个topLevelWidgets()(顶级窗口部件)的列表和通过closeAllWindows()来关闭所有窗口,等等。
10、管理应用程序的鼠标光标处理。

11、它提供复杂的对话管理支持。这使得当用户注销时,它可以让应用程序很好地结束,如果无法终止,撤消关闭进程并且甚至为未来的对话保留整个应用程序的状态。

常用的几个方法:
1、 int QCoreApplication::exec ():启动程序,进入消息循环;
2、 QCoreApplication::exit ( int returnCode = 0 ):终止消息循环,退出程序;
3、QString QCoreApplication::applicationDirPath ():返回应用程序的路径,不包含最后的“\”;
4、void QCoreApplication::addLibraryPath ( const QString & path ):设置一个库的优先搜索路径;
5、QString QCoreApplication::applicationFilePath ():返回应用程序的全路径名;
6、qint64 QCoreApplication::applicationPid ():返回应用程序的进程ID;
7、void QCoreApplication::postEvent ( QObject * receiver, QEvent * event ):将事件发送到队列并立即返回;
8、bool QCoreApplication::sendEvent ( QObject * receiver, QEvent * event ):发送事件到队列,并等待返回结果;

9、 void QCoreApplication::sendPostedEvents ( QObject * receiver, int event_type ):立即分派事件队列中先前由portEevent发送的事件;
10、 void QCoreApplication::processEvents ( QEventLoop::ProcessEventsFlags flags = QEventLoop::AllEvents ):立即分派事件队列中flags指定的事件,直到没有事件可处理;
11、QString QCoreApplication::translate ( const char * context, const char * sourceText, const char * disambiguation, Encoding encoding, Encoding encoding = CodecForTr ):通过查询安装的消息文件,返回sourceText的翻译文本,如果安装文件不包含它则返回“sourceText”。context通常是一个类名(例如,“MyDialog”)并且sourceText是英语文本或者一个短的标识文本,如果输出文本很长可以通过一个短的名称查找到一个长的名称。

下面是一个简单的例子:

#include <QApplication>
#include <QWidget>
#include <QPushButton> int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget MainWindow;
MainWindow.setMinimumSize(200, 100);
MainWindow.setMaximumSize(200, 100); QPushButton button("Hello, World", &MainWindow);
button.setGeometry(20, 20, 160, 60);
MainWindow.show();
return a.exec();
}

运行结果:

aaarticlea/png;base64,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" alt="" />

最新文章

  1. 修改Tomcat响应请求时返回的Server内容
  2. Linux SHELL 命令入门题目(一)
  3. Oracle数据库全球化
  4. cocos2dx 动画显示异常
  5. 企业模式之Unit Of Work模式
  6. 使用Aspose.Words把 word转成图片
  7. ASP.NET的分页方法(一)
  8. tomcat内存溢出,设置
  9. php json_encode url链接出现双转义字符‘\\’和中文被编码的解决方法
  10. Cocos2d-x发展---更改父的颜色、透明度的子节点上
  11. Android消息提示框Toast
  12. loadrunner&#160;脚本开发-int型变量和字符串的相互转换
  13. 2019/3/25 wen 包,对象的行为
  14. Hadoop错误:java.io.IOException: Incompatible clusterIDs
  15. echarts.js制作中国地图
  16. 第一章javascript词法结构笔记摘要
  17. c#中partial 作用
  18. jenkins的svn路径中文问题
  19. 启动另一个app
  20. C# IEnumerator的使用

热门文章

  1. 【Cocos2d-X开发学习笔记】第29期:游戏中数据的存储(上)
  2. android 自定义progressDialog实现
  3. STL源码剖析—stl_config
  4. 实现ARC文件与MRC文件互转,和混合使用。
  5. [转] __thread关键字
  6. 传感器 Sensor 加速度【示例】
  7. C# 邮件发送注意事项
  8. My.Ioc 代码示例——属性和方法注入
  9. VS2008试用版到期解决办法
  10. [转]Delphi 中动态链接库(dll)的建立和使用