对于QCoreApplication,QGuiApplication以及QApplication,我一直分的不是很清楚,今天来梳理一下,并顺便记一些相关的笔记。
以下内容全部是自己的理解,有不正确的地方,欢迎大佬指出!
QCoreApplication
QCoreApplication位于core模块,源码在Src\qtbase\src\corelib\kernel目录下,为应用程序提供了一个非gui的事件循环。
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
return a.exec();
}
在程序中,我们只实例化一个QCoreApplication,然后调用exec()进入事件循环,我们看一下具体做了什么。
int QCoreApplication::exec()
{
if (!QCoreApplicationPrivate::checkInstance("exec"))
return -1;
QThreadData *threadData = self->d_func()->threadData;
if (threadData != QThreadData::current()) {
qWarning("%s::exec: Must be called from the main thread", self->metaObject()->className());
return -1;
}
if (!threadData->eventLoops.isEmpty()) {
qWarning("QCoreApplication::exec: The event loop is alrea

本文详细解析了Qt框架中的QCoreApplication、QGuiApplication和QApplication三个核心类的异同。QCoreApplication提供非GUI事件循环,适用于不需要图形界面的场景;QGuiApplication在QCoreApplication基础上增加了GUI设置,适合纯QML或不依赖QWidget的GUI应用;QApplication则是基于QGuiApplication,专为包含QWidget的图形界面应用设计,提供更全面的功能。文章通过源码分析,阐述了它们的执行流程及常用接口,并提及了会话管理和应用程序管理的相关功能。

3534

被折叠的 条评论
为什么被折叠?



