Qt与QML语言的相关性

Har*_*vyD 6 c++ qt qml

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

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

Tho*_*ire 19

UI技术

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

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

暂且不谈HTML5和OpenGL,QtWidgets与QtQuick的问题已经在其他地方进行了讨论,例如在Qt Quick vs. Qt Widget以及2014年Qt DevDays演示中.

我的个人观点:将QtWidgets用于传统桌面应用程序,将QtQuick用于移动和嵌入式(带触摸屏的设备),除非您有充分理由不这样做.QtWidgets对传统桌面控件有更好和更成熟的支持,而QtQuick更适合动画和完全自定义样式.

在桌面上使用QtQuick的一个原因是当你需要大量的自定义动画和样式时,代价是使用传统的桌面控件如工具栏,菜单栏,拖放等等.

语言

选择QtWidgets时,语言总是C++(好吧,除非你使用Python绑定).虽然您可以使用Qt Designer工具直观地创建UI,但最终这些工具被编译为C++.

选择QtQuick时, UI部分的语言将是QML和JavaScript.但是,在任何中等大小的QtQuick应用程序中,您在某些时候也会有一个C++部分 - 例如,与其他C和C++库接口,用于没有关联JavaScript API的操作,或者只是为了更快,更易于维护的代码比JS.可以从QML访问C++类和对象,查看文档以获取更多详细信息.

  • @TheSHEEEP QtQuick中的渲染速度,至少在简单情况下,比使用QtWidgets更快,因为QtQuick的渲染是在使用OpenGL的GPU上完成的,而使用QtWidgets的渲染是在CPU上完成的.但是,在QtQuick/QML中,加载QML页面通常需要比等效的QtWidgets C++代码更长的时间,并且如果不小心可能会成为瓶颈. (5认同)