【QML】如何在QML中添加自定义模块并使用

一、引言

在《导入本地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)


版权声明:本文为iriczhao原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。