Qt4格式:
connect(m_oeThread_Live,SIGNAL(SetImage(QImage)),this,SLOT(GetImage(QImage)));//带形参类型
Qt5格式:
connect(graphics,&QGraphicsView::LoadByPathEmit, m_Dock, &DockWidget::LoadByPathSlot);
常见问题:
一.信号发送一次槽函数响应多次
1.1 原因分析
connect函数执行多次。
1.2 解决方法
A. 避免connect语句执行多次(控件标准命名会自动触发信号槽)。
信号槽按标准格式会自动绑定
B. 设置信号槽第5个参数为Qt::UniqueConnection。
二.静态成员函数调用信号
2.1 参考链接
https://blog.csdn.net/u011962883/article/details/78490441
2.2 解决方法
A.其他类直接调用
//g_calcThread在Thread类中extern声明和定义,在MainWindow中可直接调用。
connect(g_calcThread,SIGNAL(onChange()),this,SLOT(sl_Change()));
三.抽象类对象不能调用子类槽函数
3.1 解决方法
将父类对象强制转换为子类对象
par = new CParent();
CChild* child=dynamic_cast<CChild*>(par);
connect(this,&Class::fun,child,&CChild::function);
四.VS打开qt程序提示无匹配信号
QMetaObject::connectSlotsByName: No matching signal for on_pushBtn_Clear_clicked()
4.1 解决方法
1.槽函数在,无对应控件名控件。
2.QWidget编辑去掉updateUI()。
五.传陌生类型(需注册)
qRegisterMetaType<QFileInfoList>("QFileInfoList");