gpt4 book ai didi

qt - 如何强制加载程序重新加载/重置或删除预加载 qml 页面的缓存

转载 作者:行者123 更新时间:2023-12-04 11:02:23 26 4
gpt4 key购买 nike

在 qml 中,我有一个页面 main.qml,如果我单击该页面中的矩形,它会从 second.qml 文件中打开一个组件,并出现一个 ListView 。 ListView 很长,可以向下滚动。要从 second.qml 转到 main.qml(上一页),也可以通过创建后退按钮来完成。 到目前为止一切正常并且它可以工作并且是通过使用加载器然后更改加载器源来完成的。

当我再次单击 main.qml 中的矩形后重新访问 second.qml 时,问题开始。这次显示的是上次留下的listview。我想要的是在第一次加载时重新加载 second.qml。我遇到过 clear componentcache 等。但是,它对我不起作用。

关于如何清除加载程序的缓存内存以像我第一次在 qml 中加载它一样重新加载它的简单示例会很有帮助。

在 main.qml 中

    MouseArea {
anchors.fill: parent
onClicked: {
pp.close()

//clearComponentCache(loader)

loader.setSource("second.qml",
{ "x":0,
"y":30});
//loader.reload()


}
}

最佳答案

我遇到了类似的问题,我找到了一个工作正常的解决方法。( https://forum.qt.io/topic/102523/reload-a-loader-on-button-click/5 )

  1. 停用装载机
  2. 设置源
  3. 激活加载器
loader.active = false;
loader.source = "some_file.qml";
loader.active = true;

如前所述,这只是一种解决方法,我真的很想知道是否有干净的方法来做到这一点。

关于qt - 如何强制加载程序重新加载/重置或删除预加载 qml 页面的缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58716153/

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