0、说明

QCoreApplication提供了有关当前运行程序的相关信息,当前程序应当是非GUI程序。对于GUI程序,应该用QGuiApplication,而对于采用了Qt Widget模块的程序,应该使用QApplication。不过这三者的继承关系是,QCoreApplication → QGuiApplicatioin → QApplication,所以后两种类也可以使用QCoreApplication的相关方法,如applicationDirPath()——可执行应用文件所在目录;applicationFilePath()——可执行应用文件路径。

QCoreApplication负责管理main事件循环,其中包含了来自OS的所有事件。此外,它也负责管理程序的初始化和收尾工作,包括系统和应用两方面的设置。

1)事件循环与事件处理

事件循环通过exec()启动。长期运行的程序可以调用processEvents()来保证程序的响应性。

通常情况下,推荐在main()方法中尽可能早地构造QCoreApplication、QGuiApplication、QApplication对象。exec()方法直到事件循环通过quit()退出时才会返回。

类中有许多很方便的静态方法,例如,通过instance()来获取QCoreApplication对象。事件通过sendEvent()发送,也可以通过postEvent()来发送一个事件队列。正在等待的事件可以通过removePostedEvents()移除,或者通过sendPostedEvents()进行部署。

2)程序与库的路径

程序路径通过applicationDirPath() 和 applicationFilePath()来确定,分别是程序目录和程序文件的路径。

库路径通过libraryPaths()来确定,通过setLibraryPaths()、addLibraryPath() 和 removeLibraryPath()操作库路径。

3)国际化与翻译

翻译文件通过 installTranslator() 和 removeTranslator()进行添加和移除。

程序字符串通过 translate() 进行翻译。

QObject::tr()和QObject::trUtf8()函数是通过translate()实现的。

4)命令行参数

传递到QCoreApplication构造函数中的命令行参数通过arguments()函数进行访问。

5)本地设置

在Unix/Linux系统下,Qt采用默认采用系统本地配置,这在使用POSIX系统的函数中可能会引发混乱。为了解决该问题,可以调用POSIX方法 setlocale( LC_NUMERIC , "C" ),调用时机是在初始化  QApplication 、QGuiApplication 、 QCoreApplication之后。

1、模块和加载项

Header: #include <QCoreApplication>
qmake: QT += core
Inherits: QObject
Inherited By:

QGuiApplication

2、构造

QCoreApplication(int &argc, char **argv)

构造一个Qt Core程序。Core程序没有用户界面,常见的有控制台程序、服务器程序。

argc与argv都是传入的参数,即命令行参数,通过arguments()可以用更方便的形式处理。

4、实例字段

类型

字段

说明

QString applicationName 程序名
QString applicationVersion 程序版本
QString organizationDomain 组织域
QString organizationName 组织名
bool quitLockEnabled 是否允许QEventLoopLocker

5、静态方法

返回值类型

方法

说明

void addLibraryPath(QString path) 添加库路径到Library path list开头,以确保该路径在搜索库时第一个被搜索到。
QString

applicationDirPath()

应用可执行文件所在的目录的路径。
QString applicationFilePath() 应用可执行文件的路径
qint64 applicationPid() 应用所属的当前进程ID
QString applicationVersion() 应用的版本
QStringList arguments() 命令行参数的List
bool closingDown() 当应用要被结束时,返回true
QAbstractEventDispatcher * eventDispatcher()  
int exec()

进入主程序,启动主循环,等待调用exit()。

返回值是exit()传来的值。

void exit(int returnCode = 0) 以指定returnCode退出应用,0表示正常退出。
bool installTranslator(QTranslator *translationFile) 添加翻译器
QCoreApplication * instance() 应用对象本身
bool isQuitLockEnabled()  
isSetuidAllowed()  
QStringList libraryPaths() 库路径List
QString organizationDomain()  
QString organizationName()  
void postEvent(QObject *receiver, QEvent *event, int priority = Qt::NormalEventPriority) 添加事件
void

processEvents(QEventLoop::ProcessEventsFlags flags = QEventLoop::AllEvents)

processEvents(QEventLoop::ProcessEventsFlags flags, int ms)

处理默写待运行事件
void removeLibraryPath(const QString &path) 移除库路径
void removePostedEvents(QObject *receiver, int eventType = 0) 移除所有用postEvent()发送给receiver的事件
bool removeTranslator(QTranslator *translationFile) 移除翻译器
bool sendEvent(QObject *receiver, QEvent *event) 直接发送事件给receiver
void sendPostedEvents(QObject *receiver = nullptr, int event_type = 0) 立即处理之前通过postEvent()加入队列中的事件
void setApplicationName(const QString &application) 设置一些信息
setApplicationVersion(const QString &version)
setAttribute(Qt::ApplicationAttribute attribute, bool on = true)
setEventDispatcher(QAbstractEventDispatcher *eventDispatcher)
setLibraryPaths(QStringList paths)
setOrganizationDomain(QString orgDomain)
setOrganizationName(QString orgName)
setQuitLockEnabled(bool enabled)
setSetuidAllowed(bool allow)
bool startingUp() 如果应用对象还未创建,返回true
bool testAttribute(Qt::ApplicationAttribute attribute) 如果attribute设置了,返回true
QString translate(const char *context, const char *sourceText, const char *disambiguation = nullptr, int n = -1) 返回翻译文本

6、实例方法

返回值类型

方法

说明

void installNativeEventFilter(QAbstractNativeEventFilter *filterObj) 事件筛选
virtual bool notify(QObject *receiver, QEvent *event) 发送事件给receiver
void removeNativeEventFilter(QAbstractNativeEventFilter *filterObject) 移除事件筛选

7、信号

void aboutToQuit() 当程序将要退出 主循环 时发送该信号。
void applicationNameChanged() 当一些信息改变时发送信号
void applicationVersionChanged()
void organizationDomainChanged()
void organizationNameChanged()

8、槽

void quit() 退出,并返回0(表示成功)。等同于调用QCoreApplication::exit(0)

Qt:QCoreApplication的更多相关文章

  1. Qt:禁止qDebug的输出

    Qt:禁止qDebug的输出 在工程的.pro文件里加上以下编译批令即可: DEFINES += QT_NO_DEBUG_OUTPUT

  2. Qt:使用自定义的字体

    Qt:使用自定义的字体 1. 下载字体文件 2. 加载字体文件 3. 使用字体   QFontDatabase::addApplicationFont("XENOTRON.TTF" ...

  3. Qt:QJsonObject

    0.说明 QJsonObject在逻辑上就是一个Map或Dict!记住这一点对理解它的方法.说明很有帮助. QJsonObject类封装了JSON Object. JSON Object是一个Key- ...

  4. Qt:QJsonValue

    0.说明 QJsonValue类用于操作JSON中的各种数据. JSON是用于存储结构化数据的格式,JSON中的数据可以是六种类型: 基本类型 存储类型 bool QJsonValue::Bool d ...

  5. Qt:QJsonArray

    0.说明 QJsonArray中存储了一系列的QJsonValue.可以向其中插入.删除QJsonValue. 一个QJsonArray可以与QVariantList互相转换.可以通过size()访问 ...

  6. Qt:QUrl构造时的qrc前缀

    参考(按对我帮助从大到小排列): Qt内的各种路径(让人迷惑) - 鬼谷子com - 博客园 qt webengineview 加载本地资源方式 - beautifulday - 博客园 (17条消息 ...

  7. QT:多线程HTTP下载文件

    这里的线程是指下载的通道(和操作系统中的线程不一样),一个线程就是一个文件的下载通道,多线程也就是同时开起好几个下载通道.当服务器提供下载服务时,使用下载者是共享带宽的,在优先级相同的情况下,总服务器 ...

  8. QT:用QSet储存自定义结构体的问题——QSet和STL的set是有本质区别的,QSet是基于哈希算法的,要求提供自定义==和qHash函数

    前几天要用QSet作为储存一个自定义的结构体(就像下面这个程序一样),结果死活不成功... 后来还跑到论坛上问人了,丢脸丢大了... 事先说明:以下这个例子是错误的 #include <QtCo ...

  9. Qt:用 __thread 关键字让每个线程有自己的全局变量

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/wsj18808050/article/d ...

随机推荐

  1. 什么是HTTP? HTTP 和 HTTPS 的区别?

    转载地址: 面试官:什么是HTTP? HTTP 和 HTTPS 的区别? 一.HTTP HTTP (HyperText Transfer Protocol),即超文本运输协议,是实现网络通信的一种规范 ...

  2. 负载均衡的比例(权重,ip_hash,轮询)

    目录 一:负载均衡的比例 1.轮询 2.权重 3.ip_hash 二:测试轮询 1.测试 2.重启 3.网址测试 三:测试ip_hash 一:负载均衡的比例 1.轮询 # 默认情况下,Nginx负载均 ...

  3. Nginx命令(全局配置文件与模块)

    目录 一:Nginx命令 二:Nginx全局配置文件 1.nginx全局配置 2.过滤出Nginx 三:Nginx网址模块(解析) 一:Nginx命令 1.-v : 打印版本号 [root@web01 ...

  4. 人工智能与智能系统1->机器人学1 | 位置与姿态描述

    寒假有几项学习计划,其中有一些是为了一些任务而学,最主要的任务是我要在2021_v4的基础上编写2022_v1的大援代码,为此顺便学习一下机器人学的知识(下学期也有这方面的老黄的课程),看看能不能在结 ...

  5. dp学习(三)

    dp优化(一) 10. 状压dp 11. 倍增优化dp 12. 单调队列优化 13. 决策单调性优化(四边形不等式优化) 14. 斜率优化 15. 数据结构优化

  6. python 小兵(7)迭代器

    阅读目录 函数名的使用以及第一类对象 闭包 迭代器 回到顶部 函数名的使用以及第一类对象 函数名的运用 函数名是一个变量, 但它是一个特殊的变量, 与括号配合可以执行函数的变量 1.函数名的内存地址 ...

  7. 关于https域名下的页面iframe嵌套http页面的问题

    业务场景:在一个https域名下用iframe嵌套一个http域名的页面,会直接报错的,报错信息如下: 这段话的意思是:http域名的页面是通过https域名页面加载的,在一个安全的页面不允许加载一个 ...

  8. 「NOI十联测」反函数

    30pts 令(为1,)为-1: 暴力枚举每个点为起始点的路径,一条路径是合法的当且仅当路径权值和为0且路径上没有出现过负数. 将所有答案算出. 100pts 使用点分治. 要求知道经过重心root的 ...

  9. [USACO18DEC]The Cow Gathering P

    首先可以思考一下每次能删去的点有什么性质. 不难发现,每次能删去的点都是入度恰好为 \(1\) 的那些点(包括 \(a_i \rightarrow b_i\) 的有向边). 换句话说,每次能删去的点既 ...

  10. JspSmartUpload 简略使用

    JspSmartUpload 简略中文API文档 链接:https://blog.csdn.net/weixin_43670802/article/details/105143830 PDF课件 链接 ...