1 自定义属性

自定义属性的格式如下:

[default] [required] [readonly] property <propertyType> <propertyName>
  • 属性名称必须以小写字母开头,并且只能包含字母、数字、下划线。

  • defaultrequiredreadonly 关键字是可选的,用于修改所声明属性的语义。

  • 声明自定义属性会隐式地为该属性创建一个值更改信号,以及一个命名 on<PropertyName>Changed 的关联信号处理程序,其中 <PropertyName> 是属性的名称,但是这里需要首字母大写`

1.1 属性别名

属性别名是保存对另一个属性的引用的属性。与为属性分配新的唯一存储空间的普通属性定义不同,属性别名将新声明的属性连接为对现有属性的直接引用。

属性别名声明看起来像一个普通的属性定义,除了它需要 alias 关键字而不是属性类型,并且属性声明的右侧必须是有效的别名引用:

[default] property alias <name>: <alias reference>

与普通属性不同,别名具有以下限制:

  • 不能引用深度为3或更大的层次结构内的属性(比如:myItem.myRect.border.color)

1.1 属性别名用途总结

  1. 外部可以修改,某个自定义组件内部组件的属性。

     /* App.qml */
    
     import QtQuick.Window 2.0
     Window {
       MyRectangle { 
         textItem.text = "hello"
       }
     }
    
     /* MyRectangle.qml */
    
     import QtQuick 2.0
        
     Rectangle {
         property alias buttonText: textItem.text
        
         width: 100; height: 30; color: "yellow"
        
         Text { id: textItem }
     }