我正在尝试删除 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
⇒ 控制台输出创建对象
↓
-
stop
↓
recreate
⇒ 控制台无输出
Both obj.destroy()
and obj.deleteLater()
没有工作。
如何像C++中的delete一样强制删除动态创建的对象。
一个小改动S.M.穆萨维的回答 https://stackoverflow.com/a/45078207/691711:
我观察到将 sourceComponent 设置为 undefined 不起作用。我必须将其设置为 null 才能卸载组件。另一个选项是将源设置为空字符串。
onClicked: {
loader.sourceComponent = null; //causes destroying loaded component
}
OR
onClicked: {
loader.source = ""; //causes destroying loaded component
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)