【发布时间】:2021-05-13 04:39:44
【问题描述】:
我找不到有关 QML 属性绑定和属性更改信号的确切执行顺序的信息。
例如,我有一个类似的属性:
property int myProp: 1000
然后我绑定了另一个属性:
property int myProp2: myProp
我有属性更改信号处理程序:
onMyPropChanged: console.log("myProp changed: ", myProp, " myProp2: ", myProp2)
onMyProp2Changed: console.log("myProp2 changed: ", myProp2, " myProp: ", myProp)
如果我将 myProp 设置为 2,例如输出是:
qml: myProp changed: 2 myProp2: 1000
qml: myProp2 changed: 2 myProp: 2
我不知道是先运行属性更改信号然后再更新依赖属性的规则,还是根本没有定义它们的执行顺序。如果我有更多的依赖属性会发生什么,是否定义了它们的重新评估顺序?
那么最后像这样的交叉依赖呢:
property int myProp3: myProp2 + myProp
property int myProp2: myProp
property int myProp: 1000
onMyPropChanged: console.log("myProp changed: ", myProp, " myProp2: ", myProp2, " myProp3: ", myProp3)
onMyProp2Changed: console.log("myProp2 changed: ", myProp2, " myProp: ", myProp, " myProp3: ", myProp3)
onMyProp3Changed: console.log("myProp3 changed: ", myProp3, " myProp: ", myProp, " myProp2: ", myProp2)
在我的机器上输出是:
qml: myProp changed: 2 myProp2: 1000 myProp3: 2000
qml: myProp2 changed: 2 myProp: 2 myProp3: 2000
qml: myProp3 changed: 4 myProp: 2 myProp2: 2
【问题讨论】: