根据你提供的源代码,我可以看到在baseWidget类的构造函数中,使用QObject::connect()函数连接了一个信号和槽。具体来说,在这里将baseMsg类的action信号与lambda表达式绑定,并将其连接到了线程对象thread的mltMsgProc槽。
根据报错信息,发现是由于QObject::connect()函数中第5个参数(即槽函数)的类型不匹配导致的问题。原因在于lambda表达式作为第5个参数时,无法被正确解析为一个符合条件的槽函数。
为了解决这个问题,建议你将lambda表达式替换为一个普通的成员函数或者静态成员函数,并确保该函数参数和返回值类型与信号相匹配。例如:
class baseWidget : public QWidget, public baseMsg
{
Q_OBJECT
public:
explicit baseWidget(QWidget *parent = nullptr, QThread *thread = NULL);
private slots:
void onAction(msgObj *msg);
};
void baseWidget::onAction(msgObj *msg) {
QMetaObject::invokeMethod(thread(), "mltMsgProc", Qt::QueuedConnection, Q_ARG(msgObj *, msg));
}
baseWidget::baseWidget(QWidget *parent, QThread *thread) : QWidget(parent)
{
connect(this, &baseMsg::action, this, &baseWidget::onAction);
}
注意,在这里使用了this指针作为第3个参数来指定槽所属的对象。此外,在onAction()函数中调用了QThread::currentThread()函数来获取当前线程对象。你可以根据实际情况来修改这部分代码。
希望这些信息能够对你有所帮助!