属性绑定
简述
可以为对象的属性分配一个静态值,该值保持不变,直到为它显式分配一个新值为止。但是,为了充分利用QML及其对动态对象行为的内置支持,大多数QML对象都使用属性绑定。
在后台,QML引擎监视属性的依赖关系(即绑定表达式中的变量)。检测到更改时,QML引擎将重新计算绑定表达式并将新结果应用于属性。
功能
自动更新属性
Rectangle {
width: 200; height: 200
Rectangle {
width: 100
height: parent.height //将高度与父窗口一致
color: "blue"
}
}
注意
-
复杂的绑定会降低代码性能,可读性和可维护性。
-
如果用JavaScript语句为属性分配静态值,则绑定将被删除。如果想要重新绑定高度和宽度必须使用
Qt.binding方法
, 可以使用如下方法来检查一个属性是否解除绑定 ,当解除绑定时,会发出消息
QLoggingCategory::setFilterRules(QStringLiteral("qt.qml.binding.removal.info=true"));
import QtQuick 2.0
Rectangle {
width: 100
height: width * 2
focus: true
Keys.onSpacePressed: {
//解除绑定, height将不再自动更新
height = width * 3
//重新绑定
height = Qt.binding(function() { return width * 3 })
}
}