我想了解以下问题:
如何在声明中存储属性的先前值 QML语言?
任务是在更改之前将属性值记忆到另一个属性。问题是现有的信号机制 onPropertyNameChanged()。该机制在修改后发出有关属性更改的信号。在这个处理程序中,不可能获取属性的先前值来记忆它。
希望看到代码示例。
答案 0 :(得分:1)
有趣的问题。我看到的唯一方法是有点愚蠢:
Item {
id: item
property int prev: 0
property int temp: value
property int value: 0
onValueChanged: {
prev = temp;
temp = value;
console.log("prev=" + prev);
console.log("value=" + value)
console.log("---------------");
}
Timer {
interval: 1000
repeat: true
running: true
onTriggered: {
item.value = Math.round(Math.random() * 1000);
}
}
}
答案 1 :(得分:0)
为什么不创建您的自定义信号?
signal myValueChanged(int oldValue, int newValue)
每次更改值时,发出此信号:
function setValue(value) {
var previous = this.value
this.value = value
myValueChanged(previous, value)
}
onMyValueChanged: console.log(oldValue, newValue)
Component.onCompleted: setValue(10)
答案 2 :(得分:0)
为什么不自己创建buffer属性? 例如)
property int value: 0
property int prevValue:
onValueChanged: {
... logic to deal with value change
... if you are trying to diff with prevValue, make sure check if prevValue is not undefined (first time Value changes)
prevValue = value;
}
如果要处理自定义类型“ var”,则可以尝试:
onValueChanged: {
prevValue = JSON.parse(JSON.stringify(value));
}
prevValue = JSON.parse(JSON.stringify(value));