解决方法:在调用connect之前,通过 qRegisterMetaType() 注册你connect函数里对象的类型代码如下: typedef QString CustomString;//你自己定义的类型 qRegisterMetaType<CustomString>(“CustomString”);//注册你自己的类型 connect(…)//之后connect就不再出现该提示错误 扩展: Qt meta-object system包含对象间相互通信(信号和槽),运行类型信息和动态属性系…
背景:一个线程通过signal-slot发送PVCI_CAN_OBJ类型的值到主线程中, 错误提示: QObject::connect: Cannot queue arguments of type 'PVCI_CAN_OBJ' (Make sure 'PVCI_CAN_OBJ' is registered using qRegisterMetaType().) 原因:在线程中通过signal-slot传递信息时,参数默认放到队列中的,但PVCI_CAN_OBJ是自定义的参数,不是Qt自带的参数…
QObject::connect: Cannot queue arguments of type 'QMap<QString,QString>',(Make sure 'QMap<QString,QString>' is registered using qRegisterMetaType().). 上述错误,只有在跨线程信号传递时才会出现.  因为QMap是QT可识别的基本类型,不需要再注册元对象系统中,在同一个线程中运行没有问题. 源码: // 线程类 thread.h cla…
一般出现这种情况都是自定义的类型进行型号槽连接的时候出现的,使用 假设自定义的类型是MyClass 使用qRegisterMetaType<MyClass>("MyClass");注册之后就可以正常的进行信号和槽连接…
一般情况下信号槽直接连接方式不会出现问题,但是如果信号与槽在不同线程或Qt::QueuedConnection方式连接,可能会在连接期间报以下类似问题,如: QObject::connect: Cannot queue arguments of type 'ThreadSignal' (Make sure 'ThreadSignal' is registered using qRegisterMetaType().) 或者 QObject::connect: Cannot queue argum…
connect(ui->spinBox_luminosity,&QSpinBox::valueChanged, ui->horizontalSlider_luminosity, &QSlider::setValue); 执行上面语句,提示如下错误.connect 采用的是 Qt 5 的语法,问题原因是函数 valueChanged 有两个形态:QSpinBox::valueChanged(int) 和 QSpinBox::valueChanged(QString),编译器不知道…
我在QGraphicsScene子类中添加了item的弹出菜单,并连接Action到槽函数,结果槽函数不起作用,输出:QObject::connect: No such slot ***  C++ Code  12345678910111213141516171819202122232425   //选中item后弹出右键菜单 if (event->button() == Qt::RightButton) {     m_pItemSelected = nullptr;     foreach …
2019-08-14起笔 小熊的情况描述: 父类A继承自QWidget,所以父类A自动添加了Q_OBJECT.  子类B继承自父类A,子类B没有添加Q_OBJECT.在子类B中给动态创建的控件添加事件和槽.编译通过,无警告,无错误.运行时,应用程序输出栏显示:QObject::connect: No Such slot ...... 网上扒拉扒拉很多网友给的方案是这样的: 以后要是碰到no such slot的问题 .添加头文件#include<QCoreApplication> .看类声明中…
用过QT的小伙伴都知道连接信号槽的connect方法,但是这个方法有第五个参数,一般都是用的默认的 connect(th,SIGNAL(started()),tmpmyobject,SLOT(showID())); 今天给大家讲讲第五个参数的用法 一.基本概念: 1.Qt::AutoConnection: 默认值,使用这个值则连接类型会在信号发送时决定.如果接收者和发送者在同一个线程,则自动使用Qt::DirectConnection类型.如果接收者和发送者不在一个线程,则自动使用Qt::Que…
其实我写文章也是边查资料边编辑的 有时候是怕自己的阐述不严谨,有时候是怕自己重复造轮子 就像有些人不停的教大家QLabel QDialog QWidget 个人是不屑的 命令模式 用 Qt's Undo Framework 来举例最恰当不过了 QUndoCommand Class 里简单介绍了下用法 class AppendText : public QUndoCommand { public: AppendText(QString *doc, const QString &text) : m_…