QML Object Attributes
QML 文件中的对象声明定义一个新的类型。
An object declaration in a QML document defines a new type.
It also declares an object hierarchy that will be instantiated should an instance of that newly defined type be created.
The set of QML object-type attribute types is as follows:
QML对象类型的属性类型集合如下:
- the id attribute id
- property attributes
- signal attributes
- signal handler attributes
- method attributes
- attached properties and attached signal handler attributes
- enumeration attributes
id attribute
每个QML对象类型都只有一个id属性。
对象的 id 用于引用该对象的实例。
id 属性必须以小写字母或下划线开头,后面可以跟着任何字母、数字或下划线。
An object can be referred to by its id from anywhere within the component scope in which it is declared.
对象实例的id属性值创建后,不能再修改,且在其所在的组件范围(component scope)内必须是唯一的。
property attributes
属性是对象的状态信息,可以在对象的声明中定义。
对象的 property 可以为其分配静态值,也可以绑定到一个 dynamic expression。
属性的值可以被其他对象读取或写入。(除非 a particular QML type has explicitly disallowed this for a specific property. )
类型名必须以小写字母开头,后面可以跟着任何字母、数字或下划线。
JavaScript 保留字不是有效的属性名称。
定义 property attributes
可以通过注册类的 Q_PROPERTY
来为 C++ 中的类型定义属性,然后向 QML 类型系统注册该类。
或者在声明对象时,使用以下语法在 QML 文档中定义对象类型的属性:
[default] [required] [readonly] property <propertyType> <propertyName>
Declaring a custom property implicitly creates a value-change signal for that property, as well as an associated signal handler called on<PropertyName>Changed
, where
Rectangle {
property color previousColor
property color nextColor
onNextColorChanged: console.log("The next color will be: " + nextColor.toString())
}
Note the var value type is a generic placeholder type that can hold any type of value, including lists and objects:
property var someNumber: 1.5
property var someString: "abc"
property var someBool: true
property var someList: [1, 2, "three", "four"]
property var someObject: Rectangle { width: 100; height: 100; color: "red" }
任一 QML 类型都可以作为属性类型。
定制的 QML 类型也可以作为属性类型。
为 property attributes 分配值
初始化属性的值,可以使用 :
运算符,也可以使用 =
运算符。
<propertyName> : <value>
在声明对象时,定义新的属性,并为其分配值:
[default] property <propertyType> <propertyName> : <value>