Qt QML之QML文档
QML文档
一个QML文档就是一个满足QML文档语法的字符串。一个文档定义了一个QML对象类型。一般地,可以从本地或者远程加载一个扩展名为.qml的文件,但是可以用代码手动编写QML文档。QML文档定义的对象类型的实例可以通过使用QML代码的Component进行创建,也可以通过C++代码的QQmlComponent进行创建。另外,如果一个对象类型显示的暴露给QML类型系统,并指定一个特定的名称,该对象类型可以通过对象声明的方式直接在其它QML文档中使用。
在QML文档中定义可复用QML对象类型使得客户能够编写模块化、可读性好并易于维护的代码。
Qt5.4版本之后,支持对扩展名为".ui.qml"的文档的支持,QML引擎以标准的.qml文档部分方式处理该文档,并忽略扩展名中的.ui。Qt Creator以UI表单的方式处理这些文件。这类文件只包含QML语言的一个子集。
QML文档的结构
一个QML文档由两部分组成:导入部分和对象声明部分。导入部分包含导入声明,定义了这个文档可以使用的QML对象类型和JavaScript资源。对象声明部分定义了实例化该文档定义的对象类型时所要创建的对象树。
举例
import QtQuick 2.0
Rectangle {
width: 300
height: 200
color: "blue"
}
QML语言的语法
文档的对象声明部分必须给出符号QML语法的有效的对象层次结构。一个对象的声明可以包含自定义对象属性的详细信息。对象方法属性可以指定为JavaScript函数,对象属性的属性值可以通过属性绑定表达式来赋值。
详见syntax of QML了解有效语法相关信息,通过integrating QML and JavaScript了解QML与Javascript相关信息。
通过QML文档定义对象类型
一个QML文档隐式地定义了一个QML对象类型。其核心是QML具有定义可重复使用的对象类型的能力。这种能力提高了QML代码的维护性,增加了对象层次声明的可读性,提高了UI定义与逻辑实现的分割程度。
举例,在Button.qml文件中定义一个Button类型
// Button.qml
import QtQuick 2.0
Rectangle {
width: 100; height: 100
color: "red"
MouseArea {
anchors.fill: parent
onClicked: console.log("Button clicked!")
}
}
该Button类型在应用中使用
// application.qml
import QtQuick 2.0
Column {
Button { width: 50; height: 50 }
Button { x: 50; width: 100; height: 50; color: "blue" }
Button { width: 50; height: 50; radius: 8 }
}
结果

详见define object types in documents
资源加载和网络透明
QML是网络透明的,应用程序可以像使用本地路径的文档一样导入远程路径下的文档。任意的url属性可以赋予一个远程或者本地的URL,QML引擎将处理所涉及的网络通信。详见Network Transparency
域和名字解析
文档中的表达式包括对象以及对象的属性,由于多个对象可能具有相同属性名的属性,某些预定义的符号解析语义必须使用QML定义。详见scope and symbol resolution
更多推荐



所有评论(0)