如何检测JSON对象内的更改?
但我预期的结果是:如何检测JSON对象内的更改?,json,qt,qml,signals,Json,Qt,Qml,Signals,但我预期的结果是: qml: Changed to : old QML识别onJsonChanged:信号没有问题,但该信号实际上似乎没有激活。我知道json.name正在成功更改,因为我在运行时进行了调试,发现它有了新的值。那么为什么信号没有激活,和/或如何检测json对象中的更改呢?当对象更改时,会发出与X属性相关的信号,在您的情况下,更改某些内部属性不会更改对象(内存空间),只会修改内部属性。要验证这一点,您可以将示例修改为: qml: Changed to : old qml: Cha
qml: Changed to : old
QML识别
onJsonChanged:
信号没有问题,但该信号实际上似乎没有激活。我知道json.name
正在成功更改,因为我在运行时进行了调试,发现它有了新的值。那么为什么信号没有激活,和/或如何检测json对象中的更改呢?当对象更改时,会发出与X属性相关的信号,在您的情况下,更改某些内部属性不会更改对象(内存空间),只会修改内部属性。要验证这一点,您可以将示例修改为:
qml: Changed to : old
qml: Changed to : new
获得以下信息:
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.0
Window {
visible: true
width: 640
height: 480
property var json: {
"name": "bar"
}
Component.onCompleted: json = {"name3": "foo"}
onJsonChanged: console.log("Changed to : " + json)
Button {
onClicked: console.log("Button clicked: " + json)
}
}
onJsonChanged信号在分配的对象更改时激活,而不是在对象相同(指向相同的内存位置)的内部元素更改时激活,例如,如果更改为以下内容,则应检测到更改:
Component.onCompleted:json={“name3”:“foo”}onJsonChanged:console.log(“更改为:”+json)按钮{onClicked:console.log(“按钮点击:+json)}
非常有意义。如果你把它作为回答,我很乐意接受
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.0
Window {
visible: true
width: 640
height: 480
property var json: {
"name": "bar"
}
Component.onCompleted: json = {"name3": "foo"}
onJsonChanged: console.log("Changed to : " + json)
Button {
onClicked: console.log("Button clicked: " + json)
}
}
qml: Changed to : [object Object]
qml: Changed to : [object Object]