我想创建SerialPort
课程,
它可以自动接收msg,然后发出信号。
但是当我编译它时会显示错误消息:
有人可以帮我解决吗? 感谢。错误:'QObject'是'SerialPort'的模糊基础 QObject :: connect(& uartObj,SIGNAL(readDone(QByteArray)),这个,SLOT(hdlRxDone(QByteArray)));
#ifndef SERIALPORT_H
#define SERIALPORT_H
#include <QObject>
#include <QSerialPort>
#include <QThread>
class SerialPort : public QSerialPort, public QThread
{
Q_OBJECT
public:
explicit SerialPort(QObject *parent = 0);
~SerialPort();
void stop();
signals:
void readDone(QByteArray data);
public slots:
private:
void run();
};
#endif // SERIALPORT_H
答案 0 :(得分:0)
QSerialPort
和QThread
都来自QObject
,因此在您的代码中,您有QObject
的多重继承,Qt
中禁止这种继承。你应该只从QThread
派生,但这不是很好的方法。最好的方法是创建从Worker
派生的简单QObject
类,HAS
QSerialPort
,并将此类移动到moveToThread()
的某个主题。
您可以在here或documentation中找到有关正确使用情况的更多信息。
关于单独线程中的串口的完整示例,您可以找到here,它是俄语,但您只需要不太复杂的代码。