【问题标题】:Qt Designer C++ or QML for GUI [closed]用于 GUI 的 Qt Designer C++ 或 QML [关闭]
【发布时间】:2011-06-04 08:23:00
【问题描述】:

我知道 QML 在 Qt 中的使用是相当新的,我想知道是否应该使用 Qt Designer 或 QML 来设计我的应用程序。我将使用 MVC 模式,如果我将 QML 用于 GUI,我主要担心的是它可能不容易集成到我的 C++ 应用程序的其余部分中。

请随时提供您的个人建议,我将不胜感激。 谢谢!

【问题讨论】:

标签: c++ qt user-interface qml


【解决方案1】:

QML 主要用于移动平台。由于它的年轻和对各种平台界面约定的关注,它缺乏像按钮和组合框这样的标准控件(但请参阅Components 项目)。如果您使用移动设备,或者您的 UI 需要高度自定义的视觉样式,QML 可能值得考虑。为设计自定义控件的大量额外工作做好准备。在我看来,集成 QML 和 C++ 仍然相当粗糙。我个人建议仅将 QML 用于更简单的应用程序,仅在移动平台上,并且仅与 JavaScript 一起使用。在适当的情况下,我可能会考虑用 C++ 编写自定义 QML 元素。

Qt 的 C++ API 不会很快消失。它的设计还考虑到了桌面,并将更好地满足用户对桌面平台的期望。 如果您使用桌面,我建议您坚持使用 C++ 和 Designer。 即使 QML 成熟了一点,它也可能不是大多数桌面应用程序的正确解决方案。

更新!

看起来好像是beginning to change。我自己还没有尝试过新组件,文档似乎有点稀疏(或者至少不碍事),但这最终可能会消除在桌面上使用 QML 的最大障碍。从长远来看,这是否会得到支持还有待观察,但如果你愿意接受成为早期采用者的风险,我认为 QML 现在可能是桌面应用程序的可行选择。

【讨论】:

  • 我将 QML 视为 WPF/XAML 的跨平台(并且完全更具可读性!)版本。没有任何东西可以使它成为特定的移动设备。
  • @Dynite:不是天生的,但移动是诺基亚(曾经?)推动它的目标,这也是它目前最舒服的地方。例如,标准 QML 组件是为触摸屏而不是鼠标设计的。
  • 另外,来自doc.qt.nokia.com/4.7-snapshot/qtquick.html -- “Qt Quick 是一组技术,旨在帮助开发人员创建直观、现代、流畅的用户界面,这些界面越来越多地用于手机、媒体播放器、机顶盒和其他便携式设备。” (强调)
  • @Steve “这是目前最舒服的地方”。我不认为这是事实所证实的。您粘贴的文字只是营销材料,以表明可以在任何地方使用。
  • 可以编辑此答案以反映将 Qt C++ API 与 QML 混合(两种方式)并不容易的事实。因此,对于桌面,您可以从上层 C++ Widgets 开始,如果您需要漂亮、花哨的东西,可以在其中添加一些使用 QML 设计的部分。
【解决方案2】:

值得尝试一下 QML 来测试它是否适合您的需求。

如果您要构建具有动态界面和动画的高度自定义 UI,那么 QML 就适合您;如果您正在构建一个传统的桌面应用程序,那么您可能希望坚持使用 Qt C++ API。

关于 QML 和 C++ 之间的集成,QML 旨在轻松与 C++ 代码集成,并且许多 QML 应用程序使用某种 C++ 后端。将 C++ 对象注入 QML 接口或在 C++ 中编写自定义 QML 元素很简单。看看http://doc.qt.io/archives/qt-4.7/qtbinding.htmlhttp://doc.qt.io/archives/qt-4.7/qml-extending-tutorial-index.html

【讨论】:

    【解决方案3】:

    上述答案遗漏的一件事是 QML 在业务逻辑方面具有 JavaScript 的附加优势/劣势(如果需要)。我目前正在为桌面构建一个(中小型)应用程序,现在我的(2)个 alpha 用户很喜欢它。我对框架的表现力以及我能够以多快的速度启动和测试它印象深刻。总而言之,我发现它比 RAD 编辑器(设计师)使用起来更快,而且当我在做诸如悬停/验证等烦人的事情时,我喜欢将 JavaScript 作为 UI 的后备...

    我认为这取决于您对语言的适应程度。如果 C++ 是您的“首选”语言,那么您可能会偏爱设计师。如果您来自 Web(坦白说,我是一名 Java EE 工程师/MVC .NET 开发人员,从事大量前端工作),您会发现它令人耳目一新且速度很快。

    它还允许用户现在期望的一些响应能力。总的来说,我会给它一个巨大的优势。试一试——在同一时间范围内,您可能会很高兴,也很生气。我仍然对几件事感到愤怒(尤其是 FileIO),但我一直在以一种我很少在桌面上做的方式享受 GUI 方面的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-02
      • 2011-06-30
      • 2010-12-09
      • 1970-01-01
      • 2015-04-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多