簡體   English   中英

錯誤:“ QObject”是“ SerialPort”的模糊基數QObject :: connect(&uartObj,SIGNAL(readDone(QByteArray)),this,SLOT(hdlRxDone(QByteArray))));

[英]error: 'QObject' is an ambiguous base of 'SerialPort' QObject::connect(&uartObj, SIGNAL(readDone(QByteArray)), this, SLOT(hdlRxDone(QByteArray)));

我想創建SerialPort類,它可以自動接收味精,然后發出信號。

但是當我編譯它時顯示錯誤消息:

錯誤:“ QObject”是“ SerialPort”的模糊基數QObject :: connect(&uartObj,SIGNAL(readDone(QByteArray)),this,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

QSerialPortQThreadQObject派生的,因此在您的代碼中,您有從QObject多個繼承,這在Qt中是禁止的。 您應該僅從QThread派生,但這不是很好的方法。 最好的辦法是創建簡單的Worker從派生類QObject ,其中HAS QSerialPort ,並推動這一類的一些線程與moveToThread()

您可以在此處或在文檔中找到有關正確用法的更多信息。

關於串行端口在單獨線程中的完整示例,您可以在這里找到,它是俄語,但是您只需要不太復雜的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM