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="" />

Qt入门(7)——QApplication类的更多相关文章

  1. Qt入门-表格类QTableWidget

    原文 :http://blog.csdn.net/xgbing/article/details/7774737 表格是GUI中常用的控件,在Qt中,常用的表格类是QTableWidget. 示例: Q ...

  2. QT 入门 -QApplication QPushButton QDialog Ui类型的手工使用

    QT 1.工具 assistant  帮助文档 qtconfig  QT配置工具 qmake     QT的make与项目文件智能创建工具 uic          UI界面的设计文件的编译工具 mo ...

  3. 第15.28节 PyQt(Python+Qt)入门学习:Model/View架构中的便利类QTableWidget详解

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.引言 表格部件为应用程序提供标准的表格显示工具,在表格内可以管理基于行和列的数据项,表格中的最大 ...

  4. 第15.27节 PyQt(Python+Qt)入门学习:Model/View架构中的便利类QTreeWidget详解

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.引言 树部件(Tree Widget)是Qt Designer中 Item Widgets(It ...

  5. Qt入门之基础篇 ( 二 ) :Qt项目建立、编译、运行和发布过程解析

    转载请注明出处:CN_Simo. 题解: 本篇内容主讲Qt应用从创建到发布的整个过程,旨在帮助读者能够快速走进Qt的世界. 本来计划是讲解Qt源码静态编译,如此的话读者可能并不能清楚地知道为何要静态编 ...

  6. Qt入门(9)——Qt中的线程支持

    Qt对线程提供了支持,基本形式有独立于平台的线程类.线程安全方式的事件传递和一个全局Qt库互斥量允许你可以从不同的线程调用Qt方法.警告:所有的GUI类(比如,QWidget和它的子类),操作系统核心 ...

  7. Qt入门(4)——Qt常见控件

    Qt提供了大量的内建控件及通用对话框可满足程序员的绝大部分要求.我们将对这些控件和对话框作一个大概的介绍. 1. QLabel 定义 QLabel* m_labelOrdered = newQLabe ...

  8. Qt入门学习——Qt 5 帮助文档的使用

    Qt入门学习——Qt 5 帮助文档的使用 学习图形界面开发,肯定离不开帮助文档的使用,因为它不像 C 语言那样就那么几个函数接口,图形接口的接口可以用海量来形容,常用的我们可能能记住,其它的真的没有必 ...

  9. Qt入门之基础篇 ( 一 ) :Qt4及Qt5的下载与安装

    转载请注明出处:CN_Simo. 导语: Qt是一个跨平台的C++图形界面应用程序框架.它提供给开发者建立图形用户界面所需的功能,广泛用于开发GUI程序,也可用于开发非GUI程序.Qt很容易扩展,并且 ...

随机推荐

  1. 关于配置tnsnames来使用PLSQL连接数据库

    关于配置tnsnames来使用PLSQL连接数据库 要想用ORACLE SQLdeveloper或者第三方工具PLSQLdeveloper.Toad等连接ORACLE数据库,必需要配置TNSnames ...

  2. android 自定义progressDialog实现

    我们在项目中经常会遇到这样一个应用场景:执行某个耗时操作时,为了安抚用户等待的烦躁心情我们一般会使用进度条之类的空间,在android中让 大家最容易想到的就是progressbar或者progres ...

  3. IntPtr与自定义结构互转

    //IntPtr转自定义结构 struct onlydata { IntPtr hwnd; }; onlydata pd=new onlydata(); IntPtr pd; pd=Marshal.P ...

  4. jni那点事

    今天说一下在jni开发中常另新手迷惑的JNIEnv这个东西 比如一个c语言的函数 JNIEXPORT jstring JNICALL Java_com_mmmmar_nativethread_Main ...

  5. [转] Form表单中method="post/get'的区别

    Form提供了两种数据传输的方式——get和post.虽然它们都是数据的提交方式,但是在实际传输时确有很大的不同,并且可能会对数据产生严重的影响.虽然为了方便的得到变量值,Web容器已经屏蔽了二者的一 ...

  6. ubuntu12.10中没有/etc/inittab文件探究

    1. 我们首先来看一下Linux系统开机启动过程: Ubuntu是Linux系统的衍生系统,其开机启动过程与上图相差不大,但是随着系统的不断发展,终究还是有不同的地方,下面,我们来了解一下Ubuntu ...

  7. Linux 下Mysql自动备份脚本

    backdb.sh 文件 #!/bin/bash USER="root" PASSWORD="888888" DATABASE="mydb" ...

  8. 移动页面缩放方法之(三)rem布局

    <!DOCTYPE HTML> <html lang="zh-cn"> <head> <meta http-equiv="Con ...

  9. 玩转iOS 9的UIDynamics(转)

    转自 http://www.cocoachina.com/ios/20150716/12613.html 本文由CocoaChina翻译小组成员AGSpider(微博)翻译自fancypixel的博客 ...

  10. jQuery选择器部分知识点总结

    一.jQuery选择器的优势 1.使用CSS选择器时,开发人员需要考虑主流浏览器是否支持某些选择器,而在jQuery中,开发人员则可以放心的使用jQuery选择器而无需考虑浏览器是否支持这些选择器. ...