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 资源。对象声明部分定义了在实例化文档所定义的对象类型时将创建的对象树。
一个简单的文档示例如下:
import QtQuick 2.0
Rectangle {
width: 300
height: 200
color: "blue"
}有关该主题的更多信息,请参阅《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 类型即可在应用程序中使用:
|
有关此主题的详细信息,请参阅关于在文档中定义对象类型的文档。
资源加载与网络透明性
需要注意的是,QML 具有网络透明性。应用程序从远程路径导入文档与从本地路径导入文档一样简单。实际上,任何 `url ` 属性都可以被赋予远程或本地 URL,而 QML 引擎将处理其中涉及的任何网络通信。
有关导入中的网络透明性的更多信息,请参阅《网络透明性》文档。
作用域与命名解析
文档中的表达式通常涉及对象或对象的属性;由于可能定义了多个对象,且不同对象可能具有同名的属性,因此 QML 必须定义一些预定义的符号解析语义。有关该主题的深入信息,请参阅关于作用域和符号解析的页面。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.
