一、引言
在《导入本地QML文档目录》一文中,记录了如何导入本地QML文档,本文将记录:如何在QML中使用自定义模块。
二、过程记录
本文以一个backend目录来存放自定义的模块,在该目录放置一个Data目录作为模块。其中用于描述模块的就有一个qmldir文件和Values.qml文件。如下图所示:
(1)创建模块
自定义一个QML类型,用于描述应用程序中所使用到的数据。
在Values.qml放置以下内容:
pragma Singleton
import QtQuick 2.10
QtObject {
id: values
property int m_age: 25
property string m_name: iriczhao
}
在qmldir文件内容如下,以【singleton 】单例关键词指定模块:
singleton Values 1.0 Values.qml
还有一种定义模块的方法,在qmldir文件下,以【module】关键词指定,如下:
module
module关键字,后接模块标识符,每个qmldir文件只能有一个标识符。
[singleton]
singleton用来声明一个单例类型,它是可省略的。TypeName是类型名称。InitialVersion用来指定版本号。File是QML类型对应文件所在的位置。
module MyModule
MyModule1.0 MyModule.qml
(注:本文以singleton 关键词为例)
2、导入模块
在.pro工程描述文件中使用QML_IMPORT_PATH导入。
3、安装模块
在运行应用程序前,需要安装自定义的模块,即可以让Qt在执行时能够找到自定义的模块。【如果不安装模块,在项目工程中虽然不会报错,但是应用程序无法启动运行】
有以下三种方式:
(1)通过代码添加
QQmlApplicationEngine engine;
engine.addImportPath("模块路径");
(2)通过qputenv设置QML2_IMPORT_PATH
qputenv("QML2_IMPORT_PATH", "模块路径");
注意模块路径是相对于资源管理路径。
如下图所示:
(3)或者直接设置QML2_IMPORT_PATH环境变量
4、注意事项
对于导入的模块名称或者在给导入模块起一个别名时,名称的第一个字母必须是大写的,这一点极其重要!!!!!!!!
(多打几个感叹号,提醒自己注意,啧啧啧啧0.0)