QML属性 - 只读,赋值,绑定

时间:2016-04-12 14:30:02

标签: properties qml

如果我有一个属性宽度的矩形,有三个选项可以设置我混淆的值:

read-only property int widthReadOnly: 200

Rectangle{
    width: 200                             //first 
    width: widthReadOnly                   //second
    Component.onCompleted: {width = 200}   //third
}

你能告诉我什么时候使用它们吗? 谢谢。

1 个答案:

答案 0 :(得分:1)

起初你的所有例子都是一样的。 第一和第二个检查创建了对值的绑定,但由于它们是int(第一个),或者只读属性(第二个),它们永远不会更改。因为永远不会有...... Changed()信号,它们也像你的第三个例子那样只是一个任务(如果指定的值发生变化,变化将更改受让人)。 / p>

Bindings的使用是指绑定到某个可更改的值,也就是父项的宽度。因此,如果父宽度发生变化,它将传播到子项:

import QtQuick 2.0
import QtQuick.Controls 1.4
Item {
    Rectangle {
        id: papa
        width: 100
        height: 100
        color: "red"

        Rectangle {
            id: child
            anchors.centerIn: parent
            width: parent.width / 2
            height: parent.height / 2
            color: "lightsteelblue"
        }
    }
    Button {
        id: button
        onClicked: {
            papa.width = 100 + (Math.random() * 100)
        }
    }
}

如您所见,如果更新了papa宽度,它还会更改子项的宽度。