- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想创建 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
最佳答案
QSerialPort
和QThread
都派生自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/
我想创建 SerialPort 类,它可以自动接收消息,然后发出信号。 但是当我编译它时显示错误信息: error: 'QObject' is an ambiguous base of 'Serial
我是一名优秀的程序员,十分优秀!