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++##多线程#
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-02 15:39
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-30 18:19
点赞 评论 收藏
分享
牛客38347925...:9,2学生暑期实习失利开始投小厂,给这群人整自信了
点赞 评论 收藏
分享
06-12 16:00
天津大学 Java
牛客30236098...:腾讯坏事做尽,终面挂是最破防的 上次被挂了后我连简历都不刷了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务