什么是QML插件
QML插件实际上就是动态库。在QML中,我们可以以插件的形式加载组件,比如QtQuick.Controls 2.2等就是Qt官方的插件,我们把常用的组件做成插件,就可以方便以后重复使用。
如何制作插件
这里只包含几个关键步骤的截图,理解即可
制作插件
- 创建工程时选择创建qml插件
- 填写插件名称和工程路径,插件的名称会体现在qmldir文件中
- 填写插件的对象的名称和URL,这里的URL其实就是模块名称,体现在qmldir文件中
- qmldir文件分析
插件的信息会保存在qmldir文件中,如:
module pluginpath
plugin pluginname
这里要注意,在qml中调用外部插件是通过import [module name] [module version]
module name其实就是Qt qml插件目录(默认目录或者指定目录)下的路径,也就是文件夹的名称。如果模块名称是aaa.bbb.ccc,那么目录就是aaa/bbb/ccc
- 编译生成release版本的动态库,用debug版本的动态生成不了plugins.qmltypes,原因未知
- 生成plugins.qmltypes文件
在qml调用插件时,需要知道这个模块的信息,比如版本,数据类型等等,这些信息是存放在plugins.qmltypes这个文件,我们可以借助qt的工具去生成。
qmlplugindump -nonrelocatable My.Module 1.0 /import/path > /import/path/my/module/plugins.qmltypes
调用制作好的插件
- 在工程文件是填写正确的插件路径
qt本来就包含自己的插件所在目录,比如:D:\Qt\Qt5.9.6\5.9.6\mingw53_32\qml。我们要添加自己存放插件的目录QML_IMPORT_PATH += $$PWD/…/ - 在main函数中添加路径
engine.addImportPath("../");
- 在qml文件中调用模块
import mymodule 1.0