用于GUI的Qt Designer C ++或QML

时间:2011-01-05 22:59:18

标签: c++ qt user-interface qml

我知道在QT中使用QML是一个很新的问题,我想知道是否应该使用QTDesigner或QML设计我的应用程序。我将使用MVC模式,如果我在GUI中使用QML,我将主要关心的是它可能不容易集成到我的C ++应用程序的reste中。

随意提出您的个人建议,我将不胜感激。 谢谢!

3 个答案:

答案 0 :(得分:46)

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

Qt的C ++ API不会很快消失。它的设计也考虑到了桌面,并且可以更好地满足用户对桌面平台的期望。 如果您在桌面上,我建议坚持使用C ++和Designer。即使在QML成熟后,它也可能不适合大多数桌面应用程序。

更新!

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

答案 1 :(得分: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

答案 2 :(得分:13)

上述答案遗漏的一件事是QML对业务逻辑(如果需要)具有JavaScript的附加优势/劣势。我目前正在为桌面构建一个(小到中)大小的应用程序,现在我的(2)alpha用户喜欢它。我对框架的表现力以及我能够多快地得到它并进行测试印象深刻。总而言之,我发现使用它比使用RAD编辑器(设计师)更快,我喜欢在我的用户界面上使用JavaScript作为后备,当我在做徘徊/验证等烦人的事情时......

我认为这与你对语言的舒适程度有关。如果C ++是你的“转到”语言,那么你可能会偏爱设计师。如果你是来自Web(坦白,我是一名Java EE工程师/ MVC .NET开发人员做了很多前端),你会发现它更新鲜,更快。

它还允许用户期望的一些响应能力。总的来说,我给它一个巨大的优势。尝试一下 - 在相同的时间范围内,你可能会非常讨厌,而且很生气。我仍然对一些事情(特别是FileIO)感到生气,但我一直很喜欢桌面上我很少做的事情。