为什么应该只有一个QApplication

时间:2012-07-23 17:47:02

标签: qt

以下是Qt文档的引用:

  

对于使用Qt的任何GUI应用程序,只有一个QApplication对象

很清楚。但我无法弄清楚原因。 我在面试时被问到这样一个问题,现在我找不到合适的答案,有人可以解释一下吗?

2 个答案:

答案 0 :(得分:4)

QCoreApplication文档提供了一个提示:

  

QCoreApplication包含主事件循环,其中包含所有事件   操作系统(例如,计时器和网络事件)等   来源被处理和发送。它也处理   应用程序的初始化和完成,以及系统范围   和应用程序范围的设置。

并且在任何给定时间(在单个线程中)只能运行一个事件循环,因此不同的QCoreApplication对象需要相互调用。处理事件队列时,每个队列只能看到整个交互的部分内容。对我来说似乎没什么吸引力......

另外,我认为QCoreApplication基本上是整个过程的抽象,因此在Qt过程和QCoreApplication对象之间强制执行1:1的对应是有意义的。

从技术上讲,QCoreApplication::instance()或相应的qApp宏之类的内容显然需要一个QCoreApplication实例。

答案 1 :(得分:1)

QApplication包含几个单例,作为消息循环和其他。