Item1:绑定
如果我们能使用好绑定,他将发挥出巨大的作用。只要属性依赖于更改,就对绑定进行重新计算,这可能会导致性能下降或意外行为。即使绑定很简单,其结果也会很昂贵.
因此,在使用绑定时请考虑以下规则。
减少绑定数
当使用绑定时,在某些情况下可能会使用单个更改的信号来更新多个值。考虑以下示例:
Rectangle {
id: root
Binding on color {
when: mouseArea.pressed
value: mouseArea.pressed ? "red" : "yellow"
}
MouseArea {
id: mouseArea
anchors.fill: parent
}
}
它们并不是那么简单,而我们有一个更大的应用程序。如果您所见,有两个绑定,并且每个绑定都是在用户按下鼠标按钮时执行的。
我们可以重写如下,以将绑定数减少到一个。
Rectangle {
id: root
Text {
id: label
anchors.centerIn: parent
}
MouseArea {
id: mouseArea
anchors.fill: parent
onPressedChanged: {
if (pressed) {
root.color = "red";
label.text = "Red Color";
}
else {
root.color = "yellow";
label.text = "Yellow Color";
}
}
}
}
现在,每当用户按下鼠标按钮时,对于那些预期结果中的两个,将只执行一个块。
另外,我们可以使用Connections连接到对象的特定信号并更新信号处理器中的属性。使用Loader时,这种情况特别有用。
使用Connections
Connections对象用于处理来自QML中任意QObject派生类的信号。使用Connections时要记住的一件事是Connections的target属性的默认值是其