gpt4 book ai didi

qt - 死 QML 元素接收信号?

转载 作者:行者123 更新时间:2023-12-04 18:38:14 27 4
gpt4 key购买 nike

我有类似下面的代码:

...
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...") 添加到 onDestruction 处理程序,您可以检查组件是否正在断开信号,从而实际被销毁.

关于qt - 死 QML 元素接收信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8849031/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com