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

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

最佳答案

UI技术

实际上,这实际上不是QML与C++的问题,而是与Qt一起使用哪种UI技术的问题:

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

  • 除了HTML5和OpenGL外,还讨论了QtWidgets vs QtQuick问题,例如Qt Quick vs. Qt WidgetQt DevDays 2014 presentation

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

    在桌面上使用QtQuick的一个原因是,当您需要大量自定义动画和样式时,其代价是与传统的桌面控件(如工具栏,菜单栏,拖放操作等)作斗争。



    当选择 QtWidgets,语言始终是C++(当然,除非你使用Python绑定(bind))。虽然可以使用Qt Designer tool直观地创建UI,但最终将这些UI编译为C++。

    当选择 QtQuick,语言的UI部件将是QML和JavaScript。但是,在任何中等大小的QtQuick应用程序中,您有时都会拥有C++部分-例如,与其他C和C++库进行接口(interface),进行不具有关联的JavaScript API的操作,或者仅仅是为了实现更快,更可维护的代码比JS。可以从QML访问C++类和对象,有关更多详细信息,请检查the documentation

    10-04 13:47