gpt4 book ai didi

c++ - 如何中止加载程序中的加载组件?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:22:05 25 4
gpt4 key购买 nike

我有一个 Loader 对象可以加载一些非常重的组件。某些事件在加载过程中到达,需要加载停止并返回清空 Loader。可能吗?

最佳答案

中止对象创建

正如 Qt 所记录的那样,存在三种卸载/中止对象实例化的方法:

  1. 设置Loader.activefalse
  2. 设置Loader.source为空字符串
  3. 设置Loader.sourceComponentundefined

异步行为

为了能够在加载期间更改这些属性,Loader.asynchronous应为 true,否则 GUI 线程正忙于加载对象。您还需要 QQmlIncubationController为您的QQmlEngine控制用于对象孵化的空闲时间。没有这样的 Controller Loader.asynchronous 没有任何效果。注意 QQmlApplicationEngine如果场景包含 QQuickWindow,则自动安装默认 Controller 。

错误

直到上次测试的 Qt 版本(Qt 5.8.0、5.9.0 beta),在中止未完成的对象孵化时存在严重的内存泄漏(至少在某些情况下,包括 derM 的答案中的示例)导致大型组件的内存使用量快速增加。 bug report创建时包括建议的解决方案。

根据错误报告,这应该在 Qt 5.15 版中修复(未测试)。

关于c++ - 如何中止加载程序中的加载组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43371159/

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