【问题标题】:How should i build my GUI in Qt?我应该如何在 Qt 中构建我的 GUI?
【发布时间】:2011-06-04 03:37:39
【问题描述】:

我想知道哪种方式最适合开始在 Qt 中构建 GUI+SOFT。我正在尝试基于 MVC 模式构建声音媒体播放器。到目前为止,我已经找到了 3 种方法。

1- 感谢 Qt 设计器,我应该使用 .ui 文件吗,它是否足够灵活?

2- 我应该使用 QML 进行设计而不是将其集成到 C++ 开发中吗?

3- 我应该从头开始,在没有 Qt Designer 和使用 Qt 库的情况下手工完成吗?

非常感谢您的回答。

【问题讨论】:

    标签: c++ qt user-interface interface qml


    【解决方案1】:

    注意:我使用的是 PyQt,所以我的评论可能不是最相关的。

    我发现 Qt Designer 非常适合创建 UI,但是当以后需要修改它们时,它就成了一个问题。在现有布局中插入新元素通常很棘手,您必须打破所有布局并重新组合它们(希望您没有搞砸任何事情)。此外,如果您的应用程序不是微不足道的,那么您最终可能会使用代码“修复” .ui 无法做到的事情。还有其他类似的棘手案例,但我现在不记得了。

    我最终摆脱了我的 .ui 文件。所以我建议首先使用设计器来创建 UI,然后从那时起只使用生成的代码。

    【讨论】:

    • 我认为这种技术非常适合刚接触 Qt 的人。使用设计器来熟悉可用组件及其属性,但出于 Virgil 提到的原因,使用库编写代码。对我来说,只编写代码比创建一个 UI 文件并在代码中链接到它要快。注意:我使用 C++ Qt。
    【解决方案2】:

    如果您希望您的 UI 具有动画效果,并且不需要遵循平台 UI 外观,那么 QML 是目前实现这一目标的最佳方式。如果您希望 UI 看起来像您系统上的任何其他应用程序并且具有有限的动画,那么请坚持使用 QtDesigner 和标准小部件。

    【讨论】:

      【解决方案3】:

      我更喜欢完全从头开始构建 UI。这提供了很大的灵活性并更好地了解什么是在哪里,但另一方面,更改布局有时是一件令人头疼的事情。

      【讨论】:

      • 我在 C++ 中使用 QtDesigner(包含在 QtCreator 中)。你们中有人用过 QML 吗?
      • 适用于桌面应用程序的 JavaScript?绝不。我将 QtDesigner 用于项目骨架,然后将所有内容移至 Eclipse。我也尝试过所谓的“Qt Eclipse Integration”,但发现它有点不舒服,因此只使用普通的 C++ 和 mingw 编译的 Qt 库。这是我个人的工作流程,我想很多人都会对此微笑,我已经习惯了。
      • @AndrejsCainikovs 你手动运行 qmake 吗? (因为我采用了相同的设置,但是运行 qmake 而不在项目树中创建批处理文件(调用 qmake)并在项目文件上双击设置适当的 eclipse 行为似乎是不可能的)
      • @mlvljr,您可以将 Eclipse 项目创建/转换为基于 Makefile 的项目,并将 qmake 步骤添加到该 Makefile 中。这是示例 makefile,但没有执行 qmake:stackoverflow.com/a/7823366/147407
      • @AndrejsCainikovs 谢谢,我会调查的。
      【解决方案4】:

      我会使用 Qt Designer,因为这是最简单的方法,恕我直言。

      【讨论】:

      • C++ 的 Qt 设计器是否完整,即包含大部分/所有小部件和布局?我在使用 PyQt Designer 版本时遇到了介绍问题,它缺少大多数类和一些布局,所以我无法继续使用 Designer 制作我的 GUI,并且不得不切换到手动编码(从好的方面来说,我现在拥有更多的 GUI 编程经验和UI 的代码更短更简洁)。
      • 是的,据我所知,它是完整的。我认为这是显而易见的选择。
      • Qt Designer 非常完善,任何你在里面做不到的,都可以手动扩展C++代码。查看 Qt 的演示和教程,他们都提到了手动扩展 .ui 类的 2 种(或者是 3 种,我忘了)。
      • 但是你们中有人使用过 QML 并且对它有一些看法吗?谢谢:d
      猜你喜欢
      • 2011-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-27
      • 1970-01-01
      • 1970-01-01
      • 2021-02-21
      相关资源
      最近更新 更多