-
在使用自定义类的时候如果遇到这个问题,一般出现这种情况都是自定义的类型进行型号槽连接的时候出现的,在编译时不会出现问题,但当信号触发,对应的connect起作用时,会发现信号与槽并未连接在一起。
-
使用
qRegisterMetaType(“MyClass”)
, 注册之后就可以正常的进行信号和槽连接
qRegisterMetaType<qintptr>("qintptr");
1、问题描述
跨线程使用信号和槽时,如果是非const的引用传参,就会报如下的错误:
QObject::connect: Cannot queue arguments of type 'QString&'
(Make sure 'QString&' is registered using qRegisterMetaType().)
2、测试示例
#include <QCoreApplication>
#include <QThread>
#include <Q
LQObjectSerializer
LQObjectSerializer是一个小型库,我使用它以QObject的形式自动序列化和反序列化数据。 这有点类似于gson对Java和Kotlin所做的工作,尽管简单得多。
JSON反序列化为QObject
给出的是这个json字符串:
{"menu": {
"header": "SVG Viewer",
"items": [
{"id": "Open"},
{"id": "OpenNew", "label": "Open New"},
null,
{"id": "ZoomIn", "label": "Zoom In"},
{"id": "ZoomOut", "label": "Zoom Out"},
{"id": "Origin
(Make sure 'QAbstractSocket::SocketState' is registered using qRegisterMetaType().)
目前个人遇到的解决方法如下,不同的人遇到的问题不一定一样,解决方法也不一定一样。这里只提供我解决问题的一种方法供大家参考。
解决方法是在删除(delete)socket时出问.
最近刚开始学pyqt5,搜索后才知道只能在UI线程里绘制界面,不能在子线程里绘制- -,遇到了坑,记录下这个过程
代码是创建子线程调用fun_1,fun_1会修改list,等线程执行完后再将list里的元素添加到TableWidget里
list=[...]
def fun_1(i):
#change list
class fun2Thread(QtCore.Q...
今天线程传值中传容器发现子线程给主线程发信号的时候报错了,出现QObject::connect: Cannot queue arguments of type '******',该信息通过注册类型来解决容器传输报错的问题。
本文作者原创,转载请附上文章出处与本文链接。
1.报错提示QObject::connect: Cannot queue arguments of type 'QAbstractSocket::SocketError'
(Make sure 'QAbstractSocket::SocketError' is registered using qRegisterMetaType
().)错误原因:因为没有指定 connect的链接方...
在跨线程的信号和槽的参数传递中, 参数的类型是自定义的类型, 然而此时出现了错误:
QObject::connect: Cannot queue arguments of type 'Pos'
(Make sure 'Pos' is registered using qRegisterMetaType().)
其中, Pos是自定义的类型:
struct Pos {
int x...
QObject::connect: Cannot queue arguments of type ‘qintptr’ (Make sure
‘qintptr’ is registered using qRegisterMetaType().)
解决方案:
if (!QMetaType::isRegistered(QMetaType::type("qintptr")))
qRegist...
出现问题背景:当一个带参数为自定义结构体PortConfig的信号发送至另一个线程的槽时,
connect(this,SIGNAL(SignalOpenPort(PortConfig)),m_pMySerialPortCom,SLOT(OpenPort(PortConfig)));
编译时不会出错,但信号出发时出现错误提示:
QObject::connect: Cannot queue ar...
使用PyQt5编写UI程序的时候,发现运行时会经常蹦出这句提示,经检查发现该错误出现程序写入QtextEidt组件时产生的信息。
经搜索后发现当使用QTextEdit,并使用了append方法就会出现该错误提示,原因是我们不能通过线程来修改UI,较为安全的修改用户界面的方式是向UI窗口发送信号(signal),较为简单的方式是使用 Qt threading类。
class MyThread(QtC...
目前,在将原来C的socket通讯改为使用Qt类库QTcpSocket通讯,在修改过程中遇到不少问题,在此将问题一并记录,以备后面使用。
采用的通讯方式:QTimer定时器、QThread多线程和QTcpSocket通讯。QTimer设置定时通讯间隔(10s),QThread运行定时器响应函数,QTcpSocket进行数据发送。
1.问题一:QTcpSocket对象创建和使用要在同一个线程,否则报错。
错误描述:QObject:Cannot create children for a parent that
2 错误描述
在不同线程之间通过信号/槽来传递自定义数据类型QList的时候,提示错误:
QObject::connect: Cannot queue arguments of type 'QList'
(Make sure 'QList' is registered using qRegist
QObject::connect: Cannot queue arguments of type 'QList<quint16>'
(Make sure 'QList<quint16>' is registered using qRegisterMetaType().)
QList<quint16>类型没有被注册,只需要注册一下就解决了。
解决方法:
在报错信息中找到报错的哪一行,在之前加上下面