触发脚本以便在多个属性之一中进行任何更改的最佳方法

时间:2014-06-18 15:45:04

标签: qt qml

当你绑定一个属性时,如果其中一个有界的属性被改变,它将被重新评估。 例如:

property bool test: prCond1 || prCond2 || ... || prCondN

当条件发生变化时,test会被重新评估。

现在......我想要一些类似但触发javascript功能的东西: 当一个条件prCond1 || prCond2 || ... || prCondN中的一个被更改时,我想要一个函数被调用。

如果我只能写一个条件:

onPrCond1Changed: {
    functionCall()
}

但是当你考虑多个条件时,最好的方法是什么?有标准的方法吗?

基本上我需要这样的东西:

functionCall() if one of these changes: prCond1 || prCond2 || ... || prCondN

prCond可能属于不同类型。

1 个答案:

答案 0 :(得分:1)

一种可能的解决方案是将变量分组到变量列表中并查找列表中的更改。

property var myObject = {'prop': 'value'}
property variant conditions = [prCond1, prCond2, myObj]

onConditionsChanged: {
   console.log("one of the conditions have changed");
}

请注意,myObj属性的更改不会触发changeEvent,除非对象本身已更改(例如myObj = new Object({'prop':'newValue'}))