error: 'QObject' is an ambiguous base of '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
class,
并且可以自动接收信息然后发出信号。
但是当我编译它时显示错误信息:
error: 'QObject' is an ambiguous base of '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
QSerialPort
和 QThread
都派生自 QObject
,因此在您的代码中,您可以从 QObject
继承多重,这在 Qt
中是被禁止的。您应该只派生自 QThread
,但这不是很好的方法。最好的方法是创建简单的 Worker
class 派生自 QObject
,其中 HAS
QSerialPort
,并将此 class 移动到某个线程 moveToThread()
.
您可以找到更多关于正确用法的信息here or in the documentation。
您可以在单独的线程中找到有关串行端口的完整示例here,它是俄语,但您只需要不是很复杂的代码。
我想创建SerialPort
class,
并且可以自动接收信息然后发出信号。
但是当我编译它时显示错误信息:
error: 'QObject' is an ambiguous base of '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
QSerialPort
和 QThread
都派生自 QObject
,因此在您的代码中,您可以从 QObject
继承多重,这在 Qt
中是被禁止的。您应该只派生自 QThread
,但这不是很好的方法。最好的方法是创建简单的 Worker
class 派生自 QObject
,其中 HAS
QSerialPort
,并将此 class 移动到某个线程 moveToThread()
.
您可以找到更多关于正确用法的信息here or in the documentation。
您可以在单独的线程中找到有关串行端口的完整示例here,它是俄语,但您只需要不是很复杂的代码。