我正在尝试删除QML对象并重新创建对象,方法如下:
Rectangle{
property var obj
signal videoStopped(variant complete)
function recreate(url){
if(!obj){
console.log("createObject")
obj = videoComponet.createObject(root)
obj.stopped.connect(function(){
videoStopped(obj.status == MediaPlayer.EndOfMedia)
})
}
obj.source = url
obj.play()
}
function stop(){
obj.destroy() // obj.deleteLater()
}
Component{
id: videoComponet
Video {
anchors.fill: parent
visible: true
autoPlay: true; autoLoad: true
}
}
}
C++端调用recreate
生成一个对象,调用stop
删除该对象。
recreate
⇒ 控制台输出createObject↓
stop
↓
recreate
⇒ 控制台无输出
obj.destroy()
和obj.deleteLater()
均不起作用。如何强制删除动态创建的对象,就像在C++中使用delete一样。
obj
的值,或者您可以将其打印出来。 - MitchComponent.onDestruction: console.log('destroy')
,并将console.log(obj)
作为您的function recreate(url)
的第一行。如果您在链中使用此信号,请进一步添加onVideoStopped: console.log(complete)
。 - derM