引自:https://doc.qt.io/qt-5/qtqml-syntax-directoryimports.html
模块由模块定义qmldir文件定义。每个模块都有一个关联的类型名称空间,它是模块的标识符。模块可以提供QML对象类型(由QML文档或通过C ++插件定义)和JavaScript资源,并且可以由客户端导入。
要定义模块,开发人员应将模块中的各种QML文档,JavaScript资源和C ++插件收集到一个目录中,并编写一个适当的模块定义qmldir文件,该文件也应放置在该目录中。然后可以将该目录作为模块安装到QML导入路径中。
请注意,定义模块不是共享项目中常见QML类型的唯一方法- 为此,也可以使用简单的QML文档目录导入。
引自:https://doc.qt.io/qt-5/qtqml-modules-qmldir.html
模块定义qmldir文件
有两种不同类型的qmldir
文件:
- QML文档目录
- QML模块定义文件
QML模块定义文件
一个qmldir
文件是一个包含以下命令的纯文本文件:
/*声明模块的模块标识符。<ModuleIdentifier>是模块的(点分URI表示法)标识符
,必须与模块的安装路径匹配。所述模块标识符的指令必须是文件的第一行。*/
module <ModuleIdentifier>
例:module ExampleModule
/*声明一个对象
[singleton]可选的。用于声明单例类型。
<TypeName> 是可用的类型
<InitialVersion> 是要为其提供类型的模块版本
<File> 是定义类型的QML文件的(相对)文件名
*/
[singleton] <TypeName> <InitialVersion> <File>
/*
qmldir文件中可能存在零个或多个对象类型声明,但是每种对象类型在模块的任何特定版本中都必须具有唯一的类型名称。
注意:要声明singleton类型,定义该类型的QML文件必须包含该pragma Singleton语句。
*/
//singleton例子
//Style.qml with custom singleton type definition
pragma Singleton //单例
import QtQuick 2.0
QtObject {
property int textSize: 20
property color textColor: "green"
}
//--------------------qmldir------------------------------
// qmldir declaring the singleton type
module CustomStyles
singleton Style 1.0 Style.qml //声明Style类型
//--------------------use------------------------------
// singleton type in use
import QtQuick 2.