property属性
一个property是对象的一个属性,可以被赋为静态值或者是绑定到动态表达式上。一个property的值可以被其它的对象读取。一般情况下,property属性也可以被其它对象修改,除非该QML类型明确指定该property属性不能被修改。
【定义property属性】
一个property属性可以在C++中定义,并且通过Q_PROPERTY注册到QML类型系统。当然,我们也可以在QML文档中通过如下语法自定义对象的property属性:
通过这种方式,一个对象可以将一些特定的值暴露给其它对象,或者是更加简便的维护一些内部状态。
Property属性的名称必须以小写字母开头,且只能包含字母,数字和下划线。JavaScript的保留关键字不能作为property属性的名称。Default关键字是可选的,对于default以及default属性修改者的详细信息稍后讨论。
定义一个自定义的property属性也就为该property属性隐式的创建了一个value-change信号,也就是关联了一个名为on<PropertyName>Changed的signal handler。<PropertyName>就是property属性的名称,而且首字母要大写。
例如:下面就定义了两个property属性,并且实现了其signalhandler:
【自定义property属性的合法类型】
QML基本类型中的枚举类型都可以作为自定义property属性类型。例如:下面都是合法的property属性声明:
一些QtQuick模块提供的基本类型是不能作为property类型的,除非在QML文档中导入QtQuick模块。
var基本类型是通用的类型,可以保存任意类型的值,包括lists和objects:
另外,任何的QML对象类型都可以被用作property属性类型。例如:
这对于自定义QML类型也是适用的。如果在ColorfulButton.qml文件中定义了一个QML类型,那么ColorfulButton类型的property属性也是合法的。
【合法的property属性值】
我们可以通过两种方式为定义的property属性的值:
*初始化
*赋值
值可以是静态值也可以是绑定表达式。
{初始化}
Property属性初始化:
我们可以在定义property属性的时候,也进行初始化赋值:
初始化赋值举例如下:
https://blog.51cto.com/sysq2012cto/1336543