QML学习之属性

        QML通过元素名声明元素,通过元素属性或自定义属性来定义元素。一个属性是一个简单的键值对,例如,width: 100, text: 'Greetings', color: '#FF0000'。属性具有确定类型,且可以有初始值。

Text {
    // (1) identifier 标识符
    id: thisLabel
 
    // (2) set x- and y-position 设置x和y坐标
    x: 24; y: 16
 
    // (3) bind height to 2 * width 将高度绑定为宽度的2倍
    height: 2 * width
 
    // (4) custom property 自定义属性
    property int times: 24
 
    // (5) property alias 属性别名
    property alias anotherTimes: thisLabel.times
 
    // (6) set text appended by value 设置附加值的文本
    text: "Greetings " + times
 
    // (7) font is a grouped property 字体是一个分组属性
    font.family: "Ubuntu"
    font.pixelSize: 24
 
    // (8) KeyNavigation is an attached property KeyNavigation是一个附加属性
    KeyNavigation.tab: otherLabel
 
    // (9) signal handler for property changes 属性更改的信号处理器
    onHeightChanged: console.log('height:', height)
 
    // focus is need to receive key events 焦点是获取键盘事件前提
    focus: true
 
    // change color based on focus value 根据焦点值改变颜色
    color: focus ? "red" : "black"
}

以上述代码为例,

(1)id是一个非常特殊的属性,用于引用QML文件(在QML中称为document)中的元素。id不是字符串类型,而是一个标识符,是QML语法的一部分。id在同一文件中必须是唯一的,不能重置值,也不能查询。(它很像c++中的引用。)

(2)一个属性可以根据类型设置一个值。如果属性没有给定值,那么将会赋予一个初始值。您需要查阅特定元素的文档,以获得关于属性初始值的更多信息。

(3) 一个属性可以依赖于一个或多个其他属性。这被称为绑定。当关联属性发生变化时,绑定属性将被更新。它就像一个契约,例如,高度总是宽度的两倍。

(4)可以给元素添加新属性,需要属性限定符、类型、名称和可选的初始值(property <类型> <名称> : <初始值>)。如果没有给初始值,则会使用默认的初始值。(可以使用default将一个属性声明为默认属性)

(5)声明属性的另一种重要方法是,使用alias关键字(property alias <别名>: <引用对象>)。alias关键字允许我们将对象的属性或对象本身,从类型内部暴露出来。通过这种方法,可以把组件内部属性或元素id导出到根级属性,稍后内容会具体命题组。属性别名不需要类型,它使用被引用的属性或对象的类型。

(6)有些属性是分组属性。当一个属性更结构化并相关的属性应该组合在一起时,就会使用这个特性。这个分组属性的另一种写法是font {family: "Ubuntu";pixelSize: 24}。

(7)有些属性属于元素类型本身。这是为元素设置的全局属性,在应用程序只出现一次(如键盘输入)。格式为<元素类型>.<属性>: <值>

(8)对于每个属性,都可以提供一个信号处理器。信号处理器在属性更改后被调用。例如,在这里,我们想在高度发生变化时得到通知,并使用内置控制台向系统打印一条消息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值