互联网上的大多数指南建议在处理图形时使用 QML 而不是 Qt Widgets。
实际上,这并不是 QML 与 C++ 的问题,而是 Qt 使用哪种 UI 技术的问题:
抛开 HTML5 和 OpenGL,QtWidgets 与 QtQuick 的问题已经在其他地方讨论过,例如在 Qt Quick 与 Qt Widget 以及这个 Qt DevDays 2014 演示文稿。
我个人的观点:对于传统桌面应用程序使用 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++ 类和对象,请查看文档了解更多详细信息。