使用 QML 模块与插件
QML模块可以使用 C++插件,将用C++定义的组件提供给Qt Quick 应用程序。
要创建一个 QML 模块:
- 创建自定义组件,并将所有
.qml文件放置在专用于该模块的目录中。例如:imports\asset_imports。 - 对于Qt Quick UI原型项目(
.qmlproject),请在您希望使用该模块的应用程序的.qmlproject文件中,将包含该模块的目录路径作为importPaths变量的值进行指定。例如:importPaths: [ "imports", "asset_imports" ]。 - 为您的模块创建一个
qmldir文件,并将其放置在模块目录中。有关详细信息,请参阅“模块定义 qmldir 文件”。 - 在模块目录中创建一个名为
designer的目录。 - 为您的模块创建一个
.metainfo文件,并将其放置在designer目录中。请参考Qt XML随附的metainfo文件(例如qtquickcontrols2.metainfo)作为示例。 - 按照《导入 QML 模块》中的说明,将该模块导入项目。
注意:如果 Qt Creator 无法找到新的 QML 模块,请先构建项目,然后转到Tools >QML/JS >Reset Code Model 以重置代码模型。
使用 Qt 6.1 或更早版本进行开发
从 Qt 6.2 开始,CMake 会自动生成qmltypes 和qmldir 文件。
生成类型描述文件
在注册 QML 类型时,请确保 QML 模块具有plugins.qmltypes 文件。理想情况下,该文件应与qmldir 文件位于同一目录下。qmltypes 文件包含该模块插件所导出组件的描述,并在导入模块时由Qt Creator 加载。
有关更多信息,请参阅“类型描述文件”。
自动导出插件
如果包含插件的模块缺少qmltypes 文件,Qt Creator 会尝试通过在后台运行qmldump 程序来自动生成一个临时文件。但是,这种自动导出是一种备用机制,存在许多可能导致失败的因素,因此不能完全依赖它。
导入 QML 模块
默认情况下,Qt Creator 会在 Qt 的 Qml 导入路径中查找 QML 模块。
如果您使用 qmake,且您的应用程序添加了Qt Creator 应使用的其他导入路径,请在应用程序的.pro 文件中使用QML_IMPORT_PATH 指定这些路径:QML_IMPORT_PATH += path/to/module 。
如果您使用 CMake,请在CMakeLists.txt 文件中添加以下命令以设置 QML 导入路径:
set(QML_IMPORT_PATH ${CMAKE_SOURCE_DIR}/qml ${CMAKE_BINARY_DIR}/imports CACHE STRING "" FORCE)该导入路径将影响 CMake 项目构建的所有目标。
在设计模式下运行 QML 模块
QML Puppet 用于在Design 模式下渲染和预览图像以及收集数据。为了能够从 QML 模块正确渲染自定义组件,QML Puppet 必须使用与 QML 模块相同的 Qt 版本和编译器进行构建。
插件的行为应根据其是由 QML Puppet 还是应用程序运行而有所不同。例如,在“Design ”模式下不应运行动画。您可以使用环境变量 `QML_PUPPET_MODE ` 的值来检查插件当前是由应用程序运行,还是在“Design ”模式下进行编辑。
另请参阅 “重置代码模型”。
Copyright © The Qt Company Ltd. and other contributors. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.