QML 文档#
QML 文档的描述
QML 文档是一串符合 QML 文档语法的字符串。文档定义了一个 QML 对象类型。文档通常从本地或远程存储的 ".qml"
文件中加载,但也可以在代码中手动构建。可以使用 QML 代码中的 Component 或 C++ 中的 QQmlComponent
创建由文档定义的对象类型的实例。或者,如果以特定的类型名称显式地将对象类型暴露给 QML 类型系统,则可以直接在其他文档的对象声明中使用该类型。
在文档中定义可重用 QML 对象类型的能力,是允许客户端编写模块化、可读性强且易于维护的代码的重要推动力。
从 Qt 5.4 开始,文档也可以有 ".ui.qml"
的文件扩展名。QML 引擎像处理标准的 .qml 文件一样处理这些文件,并忽略扩展名中的 .ui
部分。Qt Design Studio 将那些文件作为 UI 文件处理。这些文件可以包含 QML 语言功能的一个子集。
QML 文档的结构#
一个 QML 文档由两个部分组成:导入部分和对象声明部分。文档中的导入部分包含导入语句,定义了文档能够使用哪些 QML 对象类型和 JavaScript 资源。对象声明部分定义了实例化由文档定义的对象类型时要创建的对象树。
以下是一个简单文档的示例
有关更多信息,请参阅QML 文档的结构。
QML 语言的语法#
文档的对象声明部分必须指定有效的对象层次结构,并使用适当的 QML 语法。对象声明可以包括对自定义 对象属性 的指定。对象方法属性可以是 JavaScript 函数,对象属性属性可以分配 属性绑定表达式。
请参阅有关 QML 语法 的文档,以了解有效语法,并参阅有关 集成 QML 和 JavaScript 的文档,以获取有关该主题的深入了解。
通过 QML 文档定义对象类型#
在上一个部分中简要描述了,文档隐式定义了一个QML对象类型。QML的核心原则之一是能够定义并重用对象类型。这提高了QML代码的可维护性,增加了对象层次声明的可读性,并促进了UI定义与逻辑实现的分离。
以下示例中,客户端开发者在文件中使用文档定义了一个Button
类型
// Button.qml import QtQuick Rectangle { width: 100; height: 100 color: "red" MouseArea { anchors.fill: parent onClicked: console.log("Button clicked!") } }
然后可以在应用程序中使用Button
类型
// application.qml import QtQuick Column { Button { width: 50; height: 50 } Button { x: 50; width: 100; height: 50; color: "blue" } Button { width: 50; height: 50; radius: 8 } }
请参阅有关通过QML文档定义对象类型主题的文档以获取详细信息。
资源加载和网络透明度#
需要注意的是,QML是网络透明的。应用程序可以从远程路径导入文档,就像从本地路径导入文档一样简单。实际上,任何url
属性都可以分配远程或本地URL,QML引擎将处理任何涉及的网络安全通信。
请参阅网络透明度文档以获取有关导入中网络透明度的更多信息。
范围和命名解析#
文档中的表达式通常涉及对象或对象的属性,由于可能定义了多个对象,以及不同的对象可能具有同名属性,QML必须定义一些预定义符号解析语义。请参阅范围和符号解析页面以获取有关该主题的详细信息。