无法动态连接到动态创建物品的"销毁"信号



MyObj为以下组件:

Item {
id:root
signal foo()
property string bar: "bar"
Component.onCompleted: root.foo()
}

通过Qt.createComponent(...)->comp.createObject(...)可以连接JS函数到所有信号,除了destruction

代码:

var comp = Qt.createComponent('MyObj.qml');
var finish = () => {
if(comp.status === Component.Error) {
console.log("Error loading component:", comp.errorString())
return
}
if(comp.status !== Component.Ready) {
console.log("Component not ready")
return
}
var obj = comp.createObject(mainWindow, {})
if(obj === null) {
console.log('Error creating object')
return
}
obj.foo.connect(() => console.log('foo!'))
obj.barChanged.connect(() => console.log('barChanged!'))
obj.destruction.connect(() => console.log('destruction!'))
}
if(comp.status !== Component.Loading)
finish();
else
comp.statusChanged.connect(finish);

产生错误:

独有:/主要。qml:32: TypeError: Cannot call method 'connect' of undefined

正好在obj.destruction.connect(...)

的那一行文档没有提到任何这样的限制。

怎么了?

把:

Component.onDestruction: console.log("#destruction")

MyObj工作正常,但这不是我需要的。

我没有意识到JS需要与QML相同的语法来访问超类的属性。

下面的代码就可以了:

obj.Component.destruction.connect(() => console.log('destruction!'))

相关内容

  • 没有找到相关文章

最新更新