确定 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的主要内容,如果未能解决你的问题,请参考以下文章

Qt传不确定类型的数据怎么传

Qt无法从继承类访问*ui指针

为啥 UI 自动化工具无法确定此处是不是启用了按钮?

QTabWidget:确定页面为QTableWidget

如何编写 XCUI 测试以确定我是不是导航到正确的屏幕?

TI J6:如何确定我的应用程序是不是正在使用 GPU