QML概念及框架--QML属性绑定

    属性绑定:指定一个属性的值的声明表示方法。通过绑定可以使用一个JavaScript表达式来作为属性的值,其中可以使用其他属性的值,也可以使用在应用程序中可以获取的其他的值。如果其他属性或者数据的值更改了,这个属性的值会自动更新。每当一个属性分配了一个JavaScript表达式时,便会隐含的使用属性绑定。

    QML扩展了标准的JavaScript引擎,所以任何可用的JavaScript表达式都可以用作属性绑定。在绑定中可以访问对象属性,调用函数,甚至可以使Date和Math等内建的JavaScript对象。向一个属性分配一个常量表达式。

   从语法上讲,绑定是可以无限复杂的。但,如果一个绑定变得非常复杂,例如涉及多行或者使用了循环,那么最好是额可以重新来编写这个组件,或者是将绑定的内容卸载一个单独的函数中。

1. 更改绑定

    PropertyChanges元素可以用在一个状态改变中来修改属性的绑定。

Rectangle {
    id: rectangle
    width: otherItem.width
    height: otherItem.height
    
    states: State {
        name: "square"
        PropertyChanges {
            target: rectangle
            width: otherItem.height
        }
    }
}
2. 使用JavaScript进行属性分配的影响

    使用JavaScript 代码来为一个属性分配值,不会产生属性绑定。

Rectangle {
    Component {
        width = otherItem.width
    }
}
  下面Rectangle的width属性会为13,而忽略了otherItem的width

Rectangle {
    width: otherItem.width

    Component {
        width = 13; //给已经进行了绑定的属性进行赋值,那么会移除绑定
    }
}
3. 绑定元素

   前面介绍的隐式绑定语法是易于使用的,而且大多数的绑定都可以完美的工作。在一些高级的情况下,必须明确的使用绑定元素来创建一个绑定。要将一个从C++中暴露的属性(system.brightness)绑定到一个来自QML的值(slider.value),就需要使用到绑定元素:

Binding {
    target: system
    property: "brightness"
    value: slider.value
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值