官文:https://doc.qt.io/qt-6/qtqml-index.html
Qt QML 模块提供了使用 QML 语言开发程序和库的框架。它定义并实现了语言和引擎基础设施,并提供了一个 API,使开发者能够使用自定义类型扩展 QML 语言,并将 QML 代码与 JavaScript 和 C++ 集成。 Qt QML 模块提供 QML API 和 C++ API。
需要注意的是,虽然 Qt QML 模块提供了语言和基础设施,但 Qt Quick 模块提供了许多可视化组件、model-view 支持、动画框架以及用于构建用户界面的更多内容。
对于新手,请参阅 QML Applications 以了解编写 QML 程序的介绍。
1. 使用模块
1.1 QML API
在 .qml 文件中导入 QtQml 就可以使用 Qt QML 中的 QML 类型:
import QtQml
1.2 C++ API
使用 C++ API 需要直接或通过其他依赖项链接到模块库。一些构建工具对此有专门的支持,包括 CMake 和 qmake。
1.2.1 CMake 构建
find_package(Qt6 COMPONENTS Qml REQUIRED)
target_link_libraries(mytarget PRIVATE Qt6::Qml)
请参阅 Build with CMake。
1.2.2 qmake 构建
QT += qml
2. QML 和 QML 类型
Qt QML 模块包含了 QML 框架和 QML 类型。QML 的构造在 The QML Reference 中进行了描述。除了 QML Basic Types 之外,该模块还附带以下 QML 对象类型:
2.1 列表和模型
Qt 5.1 中的新功能,模型类型被移动到子模块 QtQml.Models
。Qt QML Models 页面有更多信息。
- DelegateModel
- DelegateModelGroup
- ListElement
- ListModel
-
3. JavaScript 环境
JavaScript 表达式允许 QML 代码包含应用程序逻辑。Qt QML 提供了在 QML 和 C++ 中运行 JavaScript 表达式的框架。这些部分来自 0. QML参考手册。
- Using JavaScript Expressions with QML
- Dynamic QML Object Creation from JavaScript
- Defining JavaScript Resources In QML
- Importing JavaScript Resources In QML
-
4. 将 QML 与 C++ 程序集成
模块还提供了运行 QML 应用程序的框架。QML 框架允许 QML 代码包含 JavaScript 表达式并允许 QML 代码与 C++ 代码交互。
- Integrating QML and C++
5. 许可信息
Qt QML 可在 The Qt Company 的商业许可和免费软件许可下使用。从 Qt 5.4 开始,免费许可遵循 GNU Lesser General Public License, version 3、GNU General Public License, version 2。详细信息,请参阅 Qt Licensing。
此外,Qt 6.2.1 中的 Qt QML 可能包含以下许可许可下的第三方模块:
JavaScriptCore Macro Assembler | BSD 2-clause “Simplified” License |
---|---|
6. 更多指南
- 0. QML参考手册
- QML Applications - 使用 QML 和 Qt Quick 进行应用程序开发的基本信息
- Qt Quick - 提供一组 QML 类型和 C++ 类的模块,用于使用 QML 构建用户界面和应用程序
The QML Disk Cache - 如何微调 QML 引擎是否以及在何处缓存编译结果
6.1 参考
- QML Types
- Examples