gpt4 book ai didi

c++ - 错误: 'QObject' 是 'SerialPort' QObject::connect(&uartObj, SIGNAL(readDone(QByteArray)), this, SLOT(hdlRxDone(QByteArray))) 的模糊基数;

转载 作者:太空宇宙 更新时间:2023-11-04 13:29:14 26 4
gpt4 key购买 nike

我想创建 SerialPort 类,它可以自动接收消息,然后发出信号。

但是当我编译它时显示错误信息:

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

最佳答案

QSerialPortQThread 都派生自QObject,因此在您的代码中您可以从QObject 继承多个,这在 Qt 中是被禁止的。您应该只从 QThread 派生,但这不是很好的方法。最好的方法是创建从 QObject 派生的简单 Worker 类,HAS QSerialPort,并将此类移动到使用 moveToThread() 的一些线程。

您可以找到有关正确用法的更多信息here或在 documentation .

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

关于c++ - 错误: 'QObject' 是 'SerialPort' QObject::connect(&uartObj, SIGNAL(readDone(QByteArray)), this, SLOT(hdlRxDone(QByteArray))) 的模糊基数;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32164211/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com