信号槽传递非Qt库类型参数时,出现QObject::connect: Cannot queue arguments of type 'string'(Make sure 'string' is regi...
例如以C++标准库中string做参数,则会出现:
QObject::connect: Cannot queue arguments of type 'string'
(Make sure 'string' is registed using qRegisterMetaType().)
解决方案:
可以再main中加入:
qRegisterMetaType<string>("string");注册该类型
在跨线程的信号和槽的参数传递中, 参数的类型是自定义的类型, 然而此时出现了错误:
Q
Object
::
connect
: Cannot
queue
arguments
of
type
'Pos'
(Make sure 'Pos' is registered using qRegisterMeta
Type
().)
其中, Pos是自定义的类型:
struct Pos {
int x...
[Qt]Q
Object
::
connect
: Cannot
queue
arguments
of
type
'Q
String
&'的解决方法
在主线程和子线程中,通过信号与槽发送Q
String
,遇到
Q
Object
::
connect
: Cannot
queue
arguments
of
type
'Q
String
&'问题
错误代码:
connect
(this,SIGNAL(emStar...
今天线程传值中传容器发现子线程给主线程发信号的时候报错了,出现Q
Object
::
connect
: Cannot
queue
arguments
of
type
'******',该信息通过注册类型来解决容器传输报错的问题。
本文作者原创,转载请附上文章出处与本文链接。
1、问题描述
跨线程使用信号和槽时,如果是非const的引用传参,就会报如下的错误:
Q
Object
::
connect
: Cannot
queue
arguments
of
type
'Q
String
&'
(Make sure 'Q
String
&' is registered using qRegisterMeta
Type
().)
2、测试示例
#include <QCoreApplication>
#include <QThread>
#include <Q
在线程中通过信号和槽函数传递信息的时候,由于用到了自己定义的参数结构:QHashint , pMsg>,于是在发生信号传递的时候出现了报错:
Q
Object
::
connect
: Cannot
queue
arguments
of
type
"QHashint , pMsg>",(Make
sure "QHashint ,pMsg>"
is registed using qRegist
Q
Object
::
connect
: Cannot
queue
arguments
of
type
'QList<quint16>'
(Make sure 'QList<quint16>' is registered using qRegisterMeta
Type
().)
这个是由于,在主线程中开启另一个线程,这两个线程之间需要进行信息的交互。但是QList<quint16>l类型没有被注册,只要你注册一下就解决了。
解决方法:
2 错误描述
在不同线程之间通过信号/槽来传递自定义数据类型QList的时候,提示错误:
Q
Object
::
connect
: Cannot
queue
arguments
of
type
'QList'
(Make sure 'QList' is registered using qRegist
Q
Object
::
connect
: Cannot
queue
arguments
of
type
'QMap<Q
String
,Q
String
>',(Make sure 'QMap<Q
String
,Q
String
>' is registered using qRegisterMeta
Type
().).
上述错误,只有在跨线程信号传递时才会出现. 因为Q...