How Connect signal slot correctly?
-
I Connect signal and slot like this and I get this error (QObject::connect: No such slot) when run it , How can I fix it?
.h:
class RandomWalk : public QThread { Q_OBJECT public: typedef void DataHandler(void *param, double elapsedTime, double series0, double series1); RandomWalk(DataHandler *handler, void *param); virtual ~RandomWalk(); private: // Disable copying and assignment RandomWalk &operator=(const RandomWalk &); RandomWalk(const RandomWalk &); QSerialPort *serial; };
.cpp:
RandomWalk::RandomWalk(RandomWalk::DataHandler *handler, void *param) : stopThread(false), handler(handler), param(param) { serial = new QSerialPort(this); connect(serial, SIGNAL(readyRead()), this, SLOT(readData())); }
-
I Connect signal and slot like this and I get this error (QObject::connect: No such slot) when run it , How can I fix it?
.h:
class RandomWalk : public QThread { Q_OBJECT public: typedef void DataHandler(void *param, double elapsedTime, double series0, double series1); RandomWalk(DataHandler *handler, void *param); virtual ~RandomWalk(); private: // Disable copying and assignment RandomWalk &operator=(const RandomWalk &); RandomWalk(const RandomWalk &); QSerialPort *serial; };
.cpp:
RandomWalk::RandomWalk(RandomWalk::DataHandler *handler, void *param) : stopThread(false), handler(handler), param(param) { serial = new QSerialPort(this); connect(serial, SIGNAL(readyRead()), this, SLOT(readData())); }
-
Apart from @eyllanesc comments - you're using QThread wrong and for no reason - QSerialPort is async anyway without the need for a separate thread.
-
@isan Where is readData defined? Also use
connect(serial, &QSerialPort::readyRead, this, &RandomWalk::readData);
as @eyllanesc mentioned..
you need to define your slot in the header first.
means:private slots: void readData();
And do the functionality in the source file.