Qt Widgets 与 QML 语言相关性

问题描述 投票:0回答:1

互联网上的大多数指南建议在处理图形时使用 QML 而不是 Qt Widgets。

  • Qt Widgets 和 QML 有什么区别?
  • QML 给了我们什么,而 Qt Widgets 没有?
c++ qt qml qtwidgets
1个回答
34
投票

UI技术

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

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

抛开 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++ 类和对象,请查看文档了解更多详细信息。

© www.soinside.com 2019 - 2024. All rights reserved.