50

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

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

4

3 回答 3

47

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

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

更新!

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

于 2011-01-05T23:57:35.980 回答
15

值得尝试一下 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

于 2011-01-06T06:32:32.893 回答
13

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

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

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

于 2013-11-26T21:57:28.143 回答