QML模块支持将自定义QML类型及JavaScript资源进行打包,用户只需要在QML程序中通过import语句引入这个模块,就可以使用模块中包含的自定义QML对象类型以及JavaScript资源了。
QML模块是通过.qmldir文件进行定义的。以下是一个.qmldir文件的示例:
//.qmldir文件
module TimeExample
Clock 1.0 Clock.qml
MyScript 1.0 MyScript.js
plugin qmlqtimeexampleplugin
在这个例子中,创建的模块名称为TimeExample。其中包括了:Clock.qml文件定义的Clock对象类型,MyScript.js文件定义的JavaScript资源,以及一个名为qmlqtimeexampleplugin的插件。
.qmldir文件需要放入规定的文件夹中才能被QML程序引入。这个目录可能是QML引入目录,或者是QML引入目录的子目录。具体是哪一个目录需要结合模块标识符进行确定。例如对于如下目录层级:
myapp
|- mycomponents
|- CheckBox.qml
|- DialogBox.qml
|- Slider.qml
|- main
|- application.qml
如果模块的标识符为myapp.mycomponent,那么.qmldir文件需要放入某个QML导入目录的\myapp\mycomponent\文件夹中。并且模块相关的.qml文件,javascript文件以及插件dll文件都需要放入这个文件夹中。
QML模块中可以包含多个版本的自定义QML对象类型以及javaScript资源。在QML引入语句中,通过具体的版本编号来指定使用哪一个QML对象类型以及javaScript资源。
也可以定义不同版本的.qmldir文件,这样QML引擎会自动引入对应版本的模块。例如:可以将一个2.1版本.qmldir文件放入com/mycompany/mymodule.2文件夹或者com/mycompany/mymodule.2.1文件夹中。这样QML引擎会自动加载最匹配的模块。