QML,Loarder异步加载报错:Object destroyed during incubation

QML,Loarder异步加载报错:Object destroyed during incubation

动态加载,控件内容较多

这个时候会出现界面卡顿的问题,为了解决这个问题,QML提供了两种异步加载的方法:
1、使用Loader。
2、使用JavaScript:Qt.createComponent() / Qt.createQmlObject()。

Loader

这里主要讲loader的方式进行异步加载。使用loader方式加载的好处是可以先占个位,需要的时候使用source / sourceComponent进行实际内容的更换/加载。但这个时候,异步小心就会出现标题中的报错。报错的原因正如报错中所说:孵化期间被摧毁。

报错代码
在这里插入图片描述
这里的Button是自定义的Button,出错的地方也就在这里,下面是自定义的Button。
在这里插入图片描述
上图,我们可以看到contentItem和background后面跟着都是一个对象,这里是我们自定义的样式。如果我们没有自定义这些地方,就会出现QML默认的样式。所以,据我推断:是默认的样式销毁是出现了这个报错。
综上所述:当在异步加载的代码中,存在类似上面的代码时,将此可以将这一小部分独立存在以一个loader中进行同步加载,例如:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值