Qt:QApplication浅析

当我们设计Qt界面应用时,不免会对下面代码非常熟悉。QApplication作为整个GUI应用的入口点,想必是完成各种初始化,并开始主循环,各种东西。

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    //......
    return a.exec();
}
  1. 无论有多少个windows,一个应用中只会存在一个QApplication对象。若应用无需用QWidget类,则应该用QGuiApplication来代替QApplication,以减少一些无谓的初始化。
  2. QGuiApplication负责事件的处理,即QApplication会接收来自底层窗口系统的事件,并将它们分发给相应的小部件(widgets)。通过调用sendEvent() 和 postEvent(),开发者可以发送自定义的事件到widgets上。
  3. QApplication定义了应用程序的外观,并将相关属性封装在QStyle对象中。这可以在运行时使用setStyle()进行更改。(提供各种功能,详见文档)
  4. 由于QApplication对象进行了大量初始化工作,因此必须在创建与用户界面相关的任何其他对象之前创建它。QApplication还会处理常见的命令行参数。因此,可以在应用程序本身中对argv进行任何解释或修改之前创建QApplication。

接下来看看[static] int QApplication::exec()

  1. 通常在调用exec()之前不能进行任何的用户交互,因为该函数会启动事件处理,将来自底层窗口系统的事件分发给各控件。但也存在一个例外,在调用exec()之前可以使用QMessageBox(即消息弹窗)之类的模式小部件,因为模式小部件可以调用Dialog::exec()来启动本地事件循环。
  2. Qt建议将清理代码连接到aboutToQuit()信号上,而不是将其放入应用程序的main()函数中。这是因为在某些平台上,QApplication::exec()调用可能不会返回。例如,在Windows平台上,当用户注销时,系统会在Qt关闭所有顶级窗口后终止进程。因此,不能保证应用程序在QApplication::exec()调用之后有时间退出其事件循环并执行exec后的代码
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值