确定 Qt App 是不是有 UI
Posted
技术标签:
【中文标题】确定 Qt App 是不是有 UI【英文标题】:Determine if Qt App has a UI确定 Qt App 是否有 UI 【发布时间】:2011-09-13 13:21:30 【问题描述】:我正在做一个使用 Qt 的大型项目。该应用程序可以选择在 GUI 或批处理模式下运行,而我无权访问我所在的信息。
但是,我确实可以访问 QApp。有没有办法通过 Qt 知道 UI 是否存在或已被初始化?
【问题讨论】:
QApp 需要什么?你想完成什么? 【参考方案1】:QApplication
有一个 topLevelWidgets()
函数,它返回一个***小部件列表。您可以检查该列表是否为空。
【讨论】:
【参考方案2】:您是否考虑过在批处理模式下使用QCoreApplication 而不是QApplication?您不应该将 QApplication 用于非 GUI 应用程序。
如果您这样做,qApp 应该返回指向 QCoreApplication(非 GUI)或 QApplication (GUI) 的指针,您可以在运行时(如果需要)使用 dynamic_cast 进行检查。
【讨论】:
QCoreApplication 实际上在这两种情况下都使用过。我真的没有选择使用已经存在的东西,因为我只是在开发一个插件。 如果我没记错的话,需要实例化一个 QApplication 对象才能创建一个 GUI 对象。你确定它在这两种情况下都使用 QCoreApplication 吗? 要使用dynamic_cast
技巧,您需要拉入带有QApplication
定义及其各种依赖项的头文件。 (因为您正在测试从QCoreApplication
转换为QApplication
是否失败,反之亦然。) 如果此人正在开发QCoreApplication
,这将是不可取的,因为关键是不要在构建中包含 Gui 部分......以上是关于确定 Qt App 是不是有 UI的主要内容,如果未能解决你的问题,请参考以下文章