一、引言
QML文件的本地目录可以在不需要任何附加设置或配置的情况下导入。也可以导入QML文件的远程目录,但需要存在一个列出qmldir文件的目录。一个本地目录可能包含一个目录清单qmldir文件,以便定义应该提供给导入该目录的客户端的类型名,并指定应该提供给导入者的JavaScript资源。
本文主题:
从本地目录导入QML文档。
二、从本地目录导入QML文档
例如以下QML项目目录结构。在顶层目录myapp下,有一个名为mycomponents的子目录中有一组常见的UI组件,而主应用程序代码文件位于名为main的子目录中,如下所示:
myapp
|- mycomponents
|- CheckBox.qml
|- DialogBox.qml
|- Slider.qml
|- main
|- application.qml
那么main/application.qml文件可以使用mycomponents目录的相对路径导入该目录,允许它使用该目录中定义的QML对象类型:
import "../mycomponents"
DialogBox {
CheckBox {
}
Slider {
}
}
同时,目录可以被导入到一个限定的本地命名空间中,在这种情况下,目录中提供的任何类型的使用都必须是限定的(即必须通过本体命名空间导入该目录下的自定义控件类型):
import "../mycomponents" as MyComponents
MyComponents.DialogBox {
// ...
}
注意:这里 MyComponents必须是以大写字母开头的命名空间,才能引入正确的类型对象
三、总结
对于应用程序内组件集和应用程序原型等情况,导入本地目录的方法是很方便的,但是,如果模块目录移动到另一个位置,任何导入此类模块的代码都必须更新它们的相关导入语句。如果使用QML模块,则可以避免这种情况的出现,因为使用了唯一标识符字符串而不是文件系统路径,后续文章将总结《如何在QML中使用模块》