简体   繁体   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)));

I want to create SerialPort class, and it can receive msg automatic and then emit a signal. 我想创建SerialPort类,它可以自动接收味精,然后发出信号。

but when I compile it show the error message: 但是当我编译它时显示错误消息:

error: 'QObject' is an ambiguous base of 'SerialPort' QObject::connect(&uartObj, SIGNAL(readDone(QByteArray)), this, SLOT(hdlRxDone(QByteArray))); 错误:“ QObject”是“ SerialPort”的模糊基数QObject :: connect(&uartObj,SIGNAL(readDone(QByteArray)),this,SLOT(hdlRxDone(QByteArray))));

have someone can help me to solve it ? 有没有人可以帮助我解决这个问题? thanks. 谢谢。

#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

Both QSerialPort and QThread derived from QObject , so in your code you have multiple inheritance from QObject , which is forbidden in Qt . QSerialPortQThreadQObject派生的,因此在您的代码中,您有从QObject多个继承,这在Qt中是禁止的。 You should derive only from QThread , but it is not very good way. 您应该仅从QThread派生,但这不是很好的方法。 The best way is to create simple Worker class derived from QObject , which HAS QSerialPort , and move this class to some thread with moveToThread() . 最好的办法是创建简单的Worker从派生类QObject ,其中HAS QSerialPort ,并推动这一类的一些线程与moveToThread()

You can find more information about correct usage here or in the documentation . 您可以在此处或在文档中找到有关正确用法的更多信息。

Full example about serial port in separate thread you can find here , it is in russian language, but you need only code which is not very complex. 关于串行端口在单独线程中的完整示例,您可以在这里找到,它是俄语,但是您只需要不太复杂的代码。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM