C++ 将信号从工作者类连接到控制器类-QThreads
标题: 这个错误是什么意思?如何解决 键入以下内容:C++ 将信号从工作者类连接到控制器类-QThreads,c++,qt,qthread,C++,Qt,Qthread,标题: 这个错误是什么意思?如何解决 键入以下内容: connect(objWorker,&Worker::imageReady,this,&Controller::receiveImage) 结果: 错误:调用“Controller::connect(Worker&,void(Worker::*)(),Controller*,void(Controller::*)())时没有匹配的函数。错误在此行中: connect(objWorker,objWorker::imageReady,this,r
connect(objWorker,&Worker::imageReady,this,&Controller::receiveImage)代码>
结果:
错误:调用“Controller::connect(Worker&,void(Worker::*)(),Controller*,void(Controller::*)())时没有匹配的函数。
错误在此行中:
connect(objWorker,objWorker::imageReady,this,receiveImage)代码>
在“新”Qt5语法中,您需要在此处提供类名而不是对象名-objWorker::imageReady
因此,您的connect语句应该是:
error: ‘objWorker’ is not a class, namespace, or enumeration
connect( objWorker, objWorker::imageReady, this, receiveImage );
^
<> >对于“新”QT5连接语法的更多帮助,您可以更一般地引用,这就是我们如何在C++中编写一个指向成员函数的指针。不想让简单问题复杂化我键入了以下内容:connect(objWorker,&Worker::imageReady,this,&Controller::receiveImage)代码>。它导致了此错误:错误:调用“Controller::connect(Worker&,void(Worker::*)(),Controller*,void(Controller::*)())”connect(objWorker,&Worker::imageReady,this,&Controller::receiveImage)时没有匹配的函数^
还注意到,您的控制器
类的定义中没有Q_对象
宏。如果没有它,信号和插槽将无法用于该类。谢谢,这是一个问题。另一个问题是,我需要编写connect(&objWorker),而不是connect(objWorker,
#include <controller_thread.h>
Worker::Worker(){}
Worker::~Worker(){}
void Worker::calculateImage()
{
}
Controller::Controller()
{
objWorker.moveToThread( &objQThread );
connect( objWorker, objWorker::imageReady, this, receiveImage );
objQThread.start();
}
Controller::~Controller(){}
void Controller::receiveImage()
{
}
error: ‘objWorker’ is not a class, namespace, or enumeration
connect( objWorker, objWorker::imageReady, this, receiveImage );
^
connect( objWorker, &Worker::imageReady, this, &Controller::receiveImage );