0
我试图删除QML对象并重新创建对象是这样的:如何删除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++中删除一样。
有你打过电话后消灭的obj设置为null?我也会给它一个null属性var obj的初始值:null –
Creator有一个QML调试器,你可以检查'obj'的值,或者你可以打印出来。 – Mitch
添加如下内容:'Component.onDestruction:console.log('destroy')'到'Component'中的'Video'-Item和'console.log(obj)'作为你函数的第一行重建(URL)'。如果你在链中的某个地方使用这个信号,还需要一个'onVideoStopped:console.log(complete)'。 – derM