Rin*_*dov 4 c++ qt loader qml qqmlcomponent
我有一个Loader加载一些非常重的组件的对象.某些事件到达负载的中间,需要加载停止并返回清空Loader.可能吗?
中止对象创建
如Qt所述,存在三种卸载/中止对象实例化的方法:
Loader.active为falseLoader.source为空字符串Loader.sourceComponent为undefined异步行为
为了能够在加载期间更改这些属性,Loader.asynchronous应该是true,否则GUI线程正忙于加载对象.您还需要QQmlIncubationController您QQmlEngine来控制用于培养对象的空闲时间.没有这样的控制器Loader.asynchronous就没有任何效果.请注意,QQmlApplicationEngine如果场景包含a ,则自动安装默认控制器QQuickWindow.
错误
直到最后测试的Qt版本(Qt 5.8.0,5.9.0 beta),在中止未完成的对象孵化时存在严重的内存泄漏(至少在某些情况下,包括derM的答案中的示例)导致快速大型组件的内存使用量增加.一个错误报告创建包括建议的解决方案.