Cannot queue arguments of type

报错如下

这个QList<QVariantList> 在不跨线程的时候,没有一点问题。

在主线程中 新开一个线程去执行查询操作。

自己以为注册了,但是运行却报错。仔细查看后,发现 报错中提示是引用类型,而我注册的是非引用类型。

我在线程类中的信号参数是引用类型的。

所以我还需要注册引用类型

qRegisterMetaType<QList<QVariantList>>("QList<QVariantList>&");

这样运行就不报错了。

原因:当一个signal被放到队列中(queued)时,它的参数(arguments)也会被一起一起放到队列中(queued起来),这就意味着参数在被传送到slot之前需要被拷贝、存储在队列中(queue)中;为了能够在队列中存储这些参数(argument),Qt需要去construct、destruct、copy这些对象,而为了让Qt知道怎样去作这些事情,参数的类型需要使用qRegisterMetaType来注册

#qt##c++##多线程#
全部评论

相关推荐

希望各位大哥分享一下自己的看法,对于机器人行业确实不太了解
绝顶但不聪明:如果是机器人相关岗位,优先优必选(专门***器人的),其他岗位选小米
投递小米集团等公司10个岗位 > 牛客解忧铺 牛客在线求职答疑中心
点赞 评论 收藏
分享
喜欢走神的孤勇者练习时长两年半:池是池,发是发,我曾池,我现黑
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务