Qt与QML语言的相关性

时间:2018-05-02 17:33:50

标签: c++ qt qml

所以,我是Qt的新手,我的目的是让自己熟悉Qt Graphics。但是,互联网上的大多数指南建议在处理图形时使用QML而不是Qt C ++。

这是我的问题: Qt C ++和QML有什么区别? QML给我们的是什么,Qt C ++没有?

1 个答案:

答案 0 :(得分:15)

UI技术

实际上这不是QML与C ++的问题,而是Qt使用什么UI技术的问题:

  • QtWidgets(用C ++编写的代码)
  • QtQuick(用QML / JS编写的代码)
  • HTML5(通过WebEngine,嵌入到小部件或QtQuick项目中)
  • OpenGL(嵌入到小部件或QtQuick项目中)

不考虑HTML5和OpenGL,QtWidgets与QtQuick的问题已经在其他地方进行了讨论,例如Qt Quick vs. Qt WidgetQt 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以获取更多详细信息。