所以,我是Qt的新手,我的目的是让自己熟悉Qt Graphics。但是,互联网上的大多数指南建议在处理图形时使用QML而不是Qt C ++。
这是我的问题: Qt C ++和QML有什么区别? QML给我们的是什么,Qt C ++没有?
答案 0 :(得分:15)
实际上这不是QML与C ++的问题,而是Qt使用什么UI技术的问题:
不考虑HTML5和OpenGL,QtWidgets与QtQuick的问题已经在其他地方进行了讨论,例如Qt Quick vs. Qt Widget和Qt DevDays 2014 presentation。
我的个人观点:将QtWidgets用于传统桌面应用程序,将QtQuick用于移动和嵌入式(带触摸屏的设备),除非您有充分的理由不这样做。 QtWidgets对传统桌面控件有更好和更成熟的支持,而QtQuick更适合动画和完全自定义样式。
在桌面上使用QtQuick的一个原因是,当您需要大量自定义动画和样式时,代价是使用传统桌面控件(例如工具栏,菜单栏,拖放等)进行更多打击。
选择 QtWidgets 时,语言总是C ++(好吧,除非你使用Python绑定)。虽然您可以使用Qt Designer tool直观地创建UI,但最终会将这些UI编译为C ++。
选择 QtQuick 时,UI部分的语言将是QML和JavaScript。但是,在任何中等大小的QtQuick应用程序中,您在某些时候也会有一个C ++部分 - 例如,与其他C和C ++库接口,用于没有相关JavaScript API的操作,或者只是为了更快,更多可维护的代码比JS。可以从QML访问C ++类和对象,查看the documentation以获取更多详细信息。