错误:'QObject'是'SerialPort'QObject :: connect(& uartObj,SIGNAL(readDone(QByteArray))的一个模糊基础,这个,SLOT(hdlRxDone(QByteArray)));

时间:2015-08-23 07:23:33

标签: c++ multithreading qt serial-port

我想创建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

1 个答案:

答案 0 :(得分:0)

QSerialPortQThread都来自QObject,因此在您的代码中,您有QObject的多重继承,Qt中禁止这种继承。你应该只从QThread派生,但这不是很好的方法。最好的方法是创建从Worker派生的简单QObject类,HAS QSerialPort,并将此类移动到moveToThread()的某个主题。

您可以在heredocumentation中找到有关正确使用情况的更多信息。

关于单独线程中的串口的完整示例,您可以找到here,它是俄语,但您只需要不太复杂的代码。