Qt:QCoreApplication
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: |
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 | 应用可执行文件所在的目录的路径。 | |
| 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的更多相关文章
- Qt:禁止qDebug的输出
Qt:禁止qDebug的输出 在工程的.pro文件里加上以下编译批令即可: DEFINES += QT_NO_DEBUG_OUTPUT
- Qt:使用自定义的字体
Qt:使用自定义的字体 1. 下载字体文件 2. 加载字体文件 3. 使用字体 QFontDatabase::addApplicationFont("XENOTRON.TTF" ...
- Qt:QJsonObject
0.说明 QJsonObject在逻辑上就是一个Map或Dict!记住这一点对理解它的方法.说明很有帮助. QJsonObject类封装了JSON Object. JSON Object是一个Key- ...
- Qt:QJsonValue
0.说明 QJsonValue类用于操作JSON中的各种数据. JSON是用于存储结构化数据的格式,JSON中的数据可以是六种类型: 基本类型 存储类型 bool QJsonValue::Bool d ...
- Qt:QJsonArray
0.说明 QJsonArray中存储了一系列的QJsonValue.可以向其中插入.删除QJsonValue. 一个QJsonArray可以与QVariantList互相转换.可以通过size()访问 ...
- Qt:QUrl构造时的qrc前缀
参考(按对我帮助从大到小排列): Qt内的各种路径(让人迷惑) - 鬼谷子com - 博客园 qt webengineview 加载本地资源方式 - beautifulday - 博客园 (17条消息 ...
- QT:多线程HTTP下载文件
这里的线程是指下载的通道(和操作系统中的线程不一样),一个线程就是一个文件的下载通道,多线程也就是同时开起好几个下载通道.当服务器提供下载服务时,使用下载者是共享带宽的,在优先级相同的情况下,总服务器 ...
- QT:用QSet储存自定义结构体的问题——QSet和STL的set是有本质区别的,QSet是基于哈希算法的,要求提供自定义==和qHash函数
前几天要用QSet作为储存一个自定义的结构体(就像下面这个程序一样),结果死活不成功... 后来还跑到论坛上问人了,丢脸丢大了... 事先说明:以下这个例子是错误的 #include <QtCo ...
- Qt:用 __thread 关键字让每个线程有自己的全局变量
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/wsj18808050/article/d ...
随机推荐
- 什么是HTTP? HTTP 和 HTTPS 的区别?
转载地址: 面试官:什么是HTTP? HTTP 和 HTTPS 的区别? 一.HTTP HTTP (HyperText Transfer Protocol),即超文本运输协议,是实现网络通信的一种规范 ...
- 负载均衡的比例(权重,ip_hash,轮询)
目录 一:负载均衡的比例 1.轮询 2.权重 3.ip_hash 二:测试轮询 1.测试 2.重启 3.网址测试 三:测试ip_hash 一:负载均衡的比例 1.轮询 # 默认情况下,Nginx负载均 ...
- Nginx命令(全局配置文件与模块)
目录 一:Nginx命令 二:Nginx全局配置文件 1.nginx全局配置 2.过滤出Nginx 三:Nginx网址模块(解析) 一:Nginx命令 1.-v : 打印版本号 [root@web01 ...
- 人工智能与智能系统1->机器人学1 | 位置与姿态描述
寒假有几项学习计划,其中有一些是为了一些任务而学,最主要的任务是我要在2021_v4的基础上编写2022_v1的大援代码,为此顺便学习一下机器人学的知识(下学期也有这方面的老黄的课程),看看能不能在结 ...
- dp学习(三)
dp优化(一) 10. 状压dp 11. 倍增优化dp 12. 单调队列优化 13. 决策单调性优化(四边形不等式优化) 14. 斜率优化 15. 数据结构优化
- python 小兵(7)迭代器
阅读目录 函数名的使用以及第一类对象 闭包 迭代器 回到顶部 函数名的使用以及第一类对象 函数名的运用 函数名是一个变量, 但它是一个特殊的变量, 与括号配合可以执行函数的变量 1.函数名的内存地址 ...
- 关于https域名下的页面iframe嵌套http页面的问题
业务场景:在一个https域名下用iframe嵌套一个http域名的页面,会直接报错的,报错信息如下: 这段话的意思是:http域名的页面是通过https域名页面加载的,在一个安全的页面不允许加载一个 ...
- 「NOI十联测」反函数
30pts 令(为1,)为-1: 暴力枚举每个点为起始点的路径,一条路径是合法的当且仅当路径权值和为0且路径上没有出现过负数. 将所有答案算出. 100pts 使用点分治. 要求知道经过重心root的 ...
- [USACO18DEC]The Cow Gathering P
首先可以思考一下每次能删去的点有什么性质. 不难发现,每次能删去的点都是入度恰好为 \(1\) 的那些点(包括 \(a_i \rightarrow b_i\) 的有向边). 换句话说,每次能删去的点既 ...
- JspSmartUpload 简略使用
JspSmartUpload 简略中文API文档 链接:https://blog.csdn.net/weixin_43670802/article/details/105143830 PDF课件 链接 ...