我已经在Qt工作了将近4-5个月,现在我找到了QML。首先,我认为QML是项目的前端,而c ++是后端的。如果它真的如此,为什么黑客我学习QWidgets,QTreeView,QTableWidget等等,如果我不在我的项目中使用它们,因为QML来到这里!我觉得非常“烦恼”。我的意思是为什么Qt创建QML,因为它有上面的小部件和C ++(对我来说最好的语言:)?在一些QML书籍中,我发现它完全是一种语言,其中包含c ++中的所有内容,我的意思是网络,类,功能......以及在使用Qt c ++或QML时我应该使用哪一种语言?
答案 0 :(得分:2)
好吧,使用C ++,您只能使用旧的QtWidgets API GUI。这几乎是一个完成的交易,除了错误修复它不再积极开发。自Qt 5.0起所有GUI的东西都依赖于QML语言。
QML非常适合快速原型设计,并且开发速度更快。它具有动态范围和属性绑定等功能,使某些任务变得微不足道,而在C ++中实现它们实际上相当繁琐,而且并非总是可行。错误通常会导致错误消息而不是崩溃,并且比C ++更容易捕获,并且当您不必等待每次小改动时重新编译时,它确实有助于解决问题。它还使用JS,您可以使用额外的动态水平来获得更快的开发速度。最后但并非最不重要的一点是,它非常快速,易于制作和酷炫的GUI"有了它,另一件在C ++中相当繁琐的事情。
不幸的是,它的优点也可以带来缺点。性能要低得多,因此它不适合关键任务,它是一种记忆困难,由于依赖于你无法控制的高级抽象,存在一定的局限性,尽管这种情况发生时会发生这种情况。使用C ++ API,在许多情况下,您可以扩展和覆盖行为的某些方面。 GUI类型不太成熟,仍然缺少一些东西。最后但并非最不重要的是,如果您想利用现有的C ++功能手动连接它,那么您将从大多数Qt库中切断。
如果您不想,您不必使用QML。除非你的老板让你或类似的东西。你可以用C ++做更多的事情,尽管它更难,更慢。这两个API层没有竞争,它们是免费的。 QML也更容易学习,尽管它支持的一些设计范例最初对C ++开发人员感到陌生。但是一旦你得到它,它就成了技能组合中的一个有价值的工具。使用QML,我自己享受5-10倍的生产力提升。