以下是Qt文档的引用:
对于使用Qt的任何GUI应用程序,只有一个QApplication对象
很清楚。但我无法弄清楚原因。 我在面试时被问到这样一个问题,现在我找不到合适的答案,有人可以解释一下吗?
答案 0 :(得分:4)
QCoreApplication
文档提供了一个提示:
QCoreApplication包含主事件循环,其中包含所有事件 操作系统(例如,计时器和网络事件)等 来源被处理和发送。它也处理 应用程序的初始化和完成,以及系统范围 和应用程序范围的设置。
并且在任何给定时间(在单个线程中)只能运行一个事件循环,因此不同的QCoreApplication
对象需要相互调用。处理事件队列时,每个队列只能看到整个交互的部分内容。对我来说似乎没什么吸引力......
另外,我认为QCoreApplication
基本上是整个过程的抽象,因此在Qt过程和QCoreApplication
对象之间强制执行1:1的对应是有意义的。
从技术上讲,QCoreApplication::instance()
或相应的qApp
宏之类的内容显然需要一个QCoreApplication
实例。
答案 1 :(得分:1)
QApplication
包含几个单例,作为消息循环和其他。