我有类似以下的代码:
...
id: myComponent
signal updateState()
property variant modelList: []
Repeater {
model: modelList
MyButton {
...
Connection {
target: myComponent
onUpdateState: {
...
}
}
}
}
我为 modelList 分配一个值,然后发出 myComponent.updateState() 来更新中继器中的 MyButton 组件。此时我收到很多关于不存在属性的警告
似乎信号被传递到不再存在的 MyButton(因为当我更改 modelList 时转发器将重新运行)。
有没有办法避免这种情况,或者我应该忽略这些警告?
在破坏连接到 C++ 信号的 QML 组件时,我遇到了类似的问题。该问题通过添加一个处理程序来解决,该处理程序用于在组件被破坏时断开信号。在动态生成的组件中,您可以尝试手动连接信号,以便在销毁时手动断开它们。就我而言,代码如下所示:
MyComponent {
Component.onCompleted: signal.connect(callback_function)
Component.onDestruction: signal.disconnect(callback_function)
function callback_function() {
// process signal
}
}
可能有一个更好的解决方案,不需要手动连接和断开信号,但这对我有用。如果您添加一个console.log("Destroying...")
to the onDestruction
您可以检查组件是否正在断开信号,从而实际上被销毁。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)