【问题标题】:Determine if Qt App has a UI确定 Qt App 是否有 UI
【发布时间】:2011-09-13 13:21:30
【问题描述】:

我正在做一个使用 Qt 的大型项目。该应用程序可以选择在 GUI 或批处理模式下运行,而我无权访问我所在的信息。

但是,我确实可以访问 QApp。有没有办法通过 Qt 知道 UI 是否存在或已被初始化?

【问题讨论】:

  • QApp 需要什么?你想完成什么?

标签: qt user-interface


【解决方案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 部分......
    猜你喜欢
    • 2014-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-27
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多