gpt4 book ai didi

c++ - 如何删除 QML 对象

转载 作者:行者123 更新时间:2023-12-03 06:55:31 26 4
gpt4 key购买 nike

我正在尝试删除 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删除对象。

  1. 重新创建 ⇒ 控制台输出 createObject

  2. 停止

  3. 重新创建 ⇒ 控制台无输出

obj.destroy()obj.deleteLater() 均无效。如何像C++中的delete一样强制删除动态创建的对象。

最佳答案

S.M.Mousavi's answer 的小改动:我观察到将 sourceComponent 设置为 undefined 不起作用。我必须将其设置为 null 才能卸载组件。另一种选择是将源设置为空字符串。

onClicked: {
loader.sourceComponent = null; //causes destroying loaded component
}

onClicked: {
loader.source = ""; //causes destroying loaded component
}

关于c++ - 如何删除 QML 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44902936/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com