QApplication学习

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

对于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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值