我知道在Qt中使用QML是相当新的,我想知道是否应该使用Qt Designer或QML来设计我的应用程序。我将使用MVC模式,如果我使用QML来设计GUI,则我主要担心它可能不容易集成到我的C++应用程序的其余部分中。
欢迎提供您的个人建议,我会非常感激。
我知道在Qt中使用QML是相当新的,我想知道是否应该使用Qt Designer或QML来设计我的应用程序。我将使用MVC模式,如果我使用QML来设计GUI,则我主要担心它可能不容易集成到我的C++应用程序的其余部分中。
欢迎提供您的个人建议,我会非常感激。
QML主要用于移动平台。由于其年轻和对各种平台接口约定的关注,它缺乏像按钮和组合框之类的标准控件(但请参见Components项目)。如果您使用移动设备或您的UI需要高度定制的视觉样式,则可能值得考虑QML。但是您需要为设计自定义控件做大量额外工作。在我看来,集成QML和C ++仍然相当困难。个人建议仅在JavaScript上,仅在移动平台上使用QML创建简单应用程序。在适当的情况下,我可能会考虑使用C ++编写自定义QML元素。
Qt的C ++ API不会很快消失。 它也是为桌面设计的,并且将更好地满足用户对桌面平台的期望。 如果您在桌面上,请坚持使用C ++和Designer。 即使在QML成熟一些后,它也可能不是大多数桌面应用程序的正确解决方案。
看起来事情开始改变了。 我自己还没有尝试过这些新组件,文档似乎有点稀少(至少不太容易找到),但这可能最终消除了在桌面上使用QML的最大障碍。尚不清楚这是否会得到长期支持,但如果您愿意接受成为早期采用者的风险,我认为现在QML可能是桌面应用程序的可行选择。
建议尝试一下 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.html 和 http://doc.qt.io/archives/qt-4.7/qml-extending-tutorial-index.html。