QML文档路径导入


QML文档路径导入

Qt,QML,Qt Quick

QML文件的本地路径可以被导入,而不需要任何额外的安装和配置。远程的QML文件路径也可以被导入,但必须要有一个路径列表类型的qmldir文件。本地路径也可以有一个路径列表类型的qmldir文件,以便于定义类型名称,当客户端导入这些路径时,可以获得这些类型,也可以导入客户端所需要的,在qmldir中指定的JavaScript资源。

对象类型可用。
如果本地文件夹中含有一个路径列表类型的qmldir文件,qmldir中指定的类型名称就可用,否则,就会用QML文件名作为类型的名字。如果文件夹中没有qmldir,则只有以大写字母开头且以".qml"为后辍的QML文件的文件名会被暴露为对象类型。

QML模块来避免。因为相对比文件路径,安装的模块有唯一字符标识。

http://www.my-example-server.com" ,并且mycomponents路径中包含如下定义的一个qmldir文件:

CheckBox CheckBox.qml
DialogBox DialogBox.qml
Slider Slider.qml

那么,可以使用路径mycomponents的远程URL来导入路径:

import "http://www.my-example-server.com/myapp/mycomponents"

DialogBox {
    CheckBox {
        // ...
    }
    Slider {
        // ...
    }
}

注意,当通过网络来导入文件夹路径时,只能访问路径中qmldir文件所定义的QML和JavaScript。

警告:当导入远程服务器上的文件夹路径时,开发者应该时刻注意,仅加载那些可信资源,以避免加载有害代码。

路径列表类型的qmldir文件

路径列表类型的qmldir文件不同于模块定义类型的qmldir文件。前者允许一组QML文件快速和容易被分享,但它并未为这些即将注册的QML对象类型定义命名空间,也不支持这些QML对象的版本定义。
路径列表类型的qmldir文件的语法如下:

命令 语法 说明
Object Type Declaration An object type declaration allows a QML document to be exposed with the given .
Example:

RoundedButton RoundedBtn.qml
Internal Object Type Declaration internal An internal object type declaration allows a QML document to be registered as a type which becomes available only to the other QML documents contained in the directory import. The internal type will not be made available to clients who import the directory.
Example:

internal HighlightedButton HighlightedBtn.qml
JavaScript Resource Declaration A JavaScript resource declaration allows a JavaScript file to be exposed via the given identifier.
Example:

MathFunctions mathfuncs.js

本地文件路径中也可以包含(也可以不包含)一个qmldir文件。这能够让引擎仅暴露特定QML类型给导入路径的clients。而且,如果不在qmldir中明确声明JavaScript资源,则也不会被暴露给clients。