自定义QML模块(qmldir文件语法)

版权声明:如需转载,请告知博主并声明出处 https://blog.csdn.net/CLinuxF/article/details/88965759

前言

今天使用qml开发,想模块化管理时就头大了,发现对qmldir的认识还是不够多,于是大肆百度,然而所获甚少,不过也算是摸索出一些东东了,之前对qmldir的认识还是用于单例模块,现在想模块化管理就感觉力不从心啊!!!

模块化的语法

下面就记录一下所获取到的一些关于模块化的语法和用例,具体的还需要实践。

qmldir文件

qmldir是一个纯文本文件,用来定义QML模块,下面是一些常用的命令:

module <ModuleIdentifier>
声明模块id,id可以是带点的URI,注意与模块安装路径保持一致,这条命令写在首行,最多有一条
例如:module ExampleModule

<TypeName> <InitialVersion> <File>
声明在模块中可以使用的QML对象类型,这条命令可有多行
例如:MyCustomType 1.0 MyCustomType.qml

internal <TypeName> <File>
声明属于模块的但不以使用的QML对象类型,这条命令可有多行
例如:internal MyPrivateType MyPrivateType.qml

<ResourceIdentifier> <InitialVersion> <File>
声明在模块中可以使用的JavaScript文件,这条命令可有多行
例如:MyScript 1.0 MyScript.js

plugin <Name> [<path>]
声明在模块中可以使用的插件,是插件库名,这条命令可有多行
例如:plugin MyPluginLibrary

classname <C++ plugin class>
提供了在模块中使用的C++插件的类名。

typeinfo <File>
声明类型描述文件,其后缀是qmltypes
例如:typeinfo mymodule.qmltypes

#<Comment>
注释声明,例如:#this is a comment

有了qmldir文件,就可以在QML文件中导入相应的模块了,命令如下:
import <ModuleIdentifier><InitialVersion> [as <Qualifier>]<ModuleIdentifier>是模块id,
<InitialVersion>是模块版本号,[as <Qualifier>]是可选的,类似于C++的名字空间
例如:import ExampleModule1.0

新版本兼容老版本的数据,反过来则不行!!!

qmltypes文件

xxx.qmltypes文件可以使用qmlplugindump工具生成。

QML文件目录导入

import“<DirectoryPath>” [as <Qualifier>]

<DirectoryPath>可以是本地目录,也可以是远程目录,例如:
import“…/mycomponents”
import“http://www.my-example-server.com/myapp/mycomponents”
[as <Qualifier>]是可选的,用来声明标识符,避免模块中的数据暴露到全局,例如:
import“…/mycomponents” as MyComponents

C++插件

创建C++插件给QML使用,例子可参考:
$QtCreatorPath)/Examples/Qt-5.3/qml/tutorials/extending/chater6-plugins/

猜你喜欢

转载自blog.csdn.net/CLinuxF/article/details/88965759