模块导入通用形式如下:
import <ModuleIdentifier> <Version.Number> [as <Qualifier>]
import 声明导入一个指定的模块,同目录下的qml文件不需要import,直接在元素中声明即可。
//import QtQuick 2.0 as Quick 可以使用as使用命名空间,解决冲突类型名称的模块
import QtQuick 2.12 as Quick
Quick.Rectangle {
width: 100
height: 100
color: "black"
}
import 导入目录,<Qualifier>
适用于目录导入和模块导入的语义相似
import "<DirectoryPath>" [as <Qualifier>]
注意:导入路径是网络透明的:应用程序可以从远程路径导入文档,就像从本地路径导入文档一样。请参阅QML 文档中网络透明度的一般 URL 解析规则。如果该目录是远程目录,则它必须包含一个目录导入列表 qmldir 文件,因为如果该qmldir
文件不存在,QML 引擎将无法确定远程目录的内容。
JavaScript资源可以直接导入到QML文档中。每个JavaScript
import "<JavaScriptFile>" as <Identifier>
注意: <Identifier>
在 QML 文档中必须是唯一的,这与可应用于模块导入的本地命名空间限定符不同。
JavaScript文件可以由模块提供,方法是向qmldir指定模块的文件添加标识符定义。
//qmldir 文件内容
module CatGrayTest
TestModel0 1.0 TestModel0.js
TestModel1 1.0 TestModel1.js
// 演示1
import QtQuick 2.12
import CatGrayTest 1.0
Item {
Component.onCompleted: {
TestModel0.testFunction();
}
}
如果模块被导入到本地命名空间中,JavaScript资源标识符必须以命名空间限定符作为前缀才能使用:
// 演示2
import QtQuick 2.12
import CatGrayTest 1.0 as CatTest
Item {
Component.onCompleted: {s
CatTest.TestModel0.testFunction();
}
}
Qml Import Path
当导入已标识的模块时,QML引擎将在导入路径中搜索匹配的模块。
QQmlEngine::importPathList()返回的导入路径定义了引擎要搜索的默认位置。默认情况下,该列表包含:
-
当前文件所在的目录
-
由QLibraryInfo::Qml2ImportsPath()指定的位置
-
由QML2_IMPORT_PATH环境变量指定的路径
-
资源中的 qrc:/qt-project.org/imports 路径
可以通过QQmlEngine::addImportPath () 或QML2_IMPORT_PATH
环境变量添加额外的导入路径。在运行qmlscene工具时,您还可以使用该-I
选项添加导入路径。
您可以QML2_IMPORT_PATH
通过使用路径分隔符将它们连接起来,在环境变量中指定多个导入路径。在 Windows 上,路径分隔符是一个分号 ( ; ),在其他平台上它是一个冒号 ( : )。这意味着您不能在 QML2_IMPORT_PATH 中指定资源路径或 URL,因为它们本身包含冒号。但是,您可以通过以编程方式调用QQmlEngine::addImportPath ()来添加资源路径和 URL 。
目录清单qmldir文件语法
命令 | 语法 | 描述 |
---|---|---|
对象声明 | <TypeName> <FileName> | <类型名> <文件名>,对象类型声明允许将QML文档使用指定的<类型名>进行暴露. 例如: RoundedButton RoundedBtn.qml |
内部对象类型声明 | internal <TypeName> <FileName> | internal <类型名> <文件名>内部对象类型声明允许QML文档使用<类型名>进行暴露,但是只能暴露给该目录中的QML文档.例如internal RoundedButton RoundedBtn.qml |
JavaScript资源声明 | <Identifier> <FileName> | <标识符><文件名>,JavaScript资源声明允许JavaScript文件通过给定的标识符进行暴露.例如RoundedButton RoundedBtn.js |