【发布时间】:2011-09-13 13:21:30
【问题描述】:
我正在做一个使用 Qt 的大型项目。该应用程序可以选择在 GUI 或批处理模式下运行,而我无权访问我所在的信息。
但是,我确实可以访问 QApp。有没有办法通过 Qt 知道 UI 是否存在或已被初始化?
【问题讨论】:
-
QApp 需要什么?你想完成什么?
标签: qt user-interface
我正在做一个使用 Qt 的大型项目。该应用程序可以选择在 GUI 或批处理模式下运行,而我无权访问我所在的信息。
但是,我确实可以访问 QApp。有没有办法通过 Qt 知道 UI 是否存在或已被初始化?
【问题讨论】:
标签: qt user-interface
QApplication 有一个 topLevelWidgets() 函数,它返回一个顶级小部件列表。您可以检查该列表是否为空。
【讨论】:
您是否考虑过在批处理模式下使用QCoreApplication 而不是QApplication?您不应该将 QApplication 用于非 GUI 应用程序。
如果您这样做,qApp 应该返回指向 QCoreApplication(非 GUI)或 QApplication (GUI) 的指针,您可以在运行时(如果需要)使用 dynamic_cast 进行检查。
【讨论】:
dynamic_cast 技巧,您需要拉入带有QApplication 定义及其各种依赖项的头文件。 (因为您正在测试从QCoreApplication 转换为QApplication 是否失败,反之亦然。) 如果此人正在开发QCoreApplication,这将是不可取的,因为关键是不要在构建中包含 Gui 部分......