1

这是 Qt 文档的引用:

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

这很清楚。但我不知道为什么。我在面试的时候被问到这样一个问题,现在我找不到合适的答案,谁能解释一下吗?

4

2 回答 2

4

QCoreApplication文档给出了提示:

QCoreApplication 包含主事件循环,来自操作系统(例如,定时器和网络事件)和其他来源的所有事件都在其中被处理和分派。它还处理应用程序的初始化和完成,以及系统范围和应用程序范围的设置。

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

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

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

于 2012-07-23T21:04:54.773 回答
1

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

于 2012-07-24T11:31:15.673 回答