[英]How to connect a destroyed signal of C++ object from QML?
我想從 QML 連接一個被破壞的 C++ QObject
信號,所以我這樣做了:
Rectangle
{
id: root
width: 128
height: 128
Button
{
anchors.centerIn: parent
text: "Click me"
onClicked:
{
qobj.Component.onDestruction.connect(function(){console.log("It destroy")}) // qobj is set from c++
qobj.destroy() // should output "It destroy"
}
}
但是當我銷毀qobj
時沒有打印任何qobj
。
在一般情況下,您可以使用Connections元素連接到從 C++ 對象發出的信號:
Connections {
target: yourObjectComingFromCpp
onSomeSignal: console.log("Something")
}
或者在 Javascript 中通過在 JS 映射對象的相應屬性上調用connect
函數:
// without the *on*!
yourObjectComingFromCpp.someSignal.connect( /* JS function here */ );
但是:這不適用於特定的QObject::destroyed
信號,這些信號被強行列入黑名單並且在 QML 中永遠不可用( source )。
我想原因是該對象無論如何都從 QML 上下文中消失了,而且當發出該信號時,您會深入到 QObject 自己的析構函數中,這意味着您的子類上的任何屬性或方法訪問此時都是無效的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.