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++##多线程#