- 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/
我正在使用 QMap RegTable; (Seprate Class Variable) 用于存储 Modbus 寄存器地址和从串口接收到的数据。一切正常,从串口读取数据并正确填充到 QByteA
假设我们有一个功能商店 void store(const QByteArray& data); 此函数的工作是获取数据 并将其存储起来。不幸的是,如果参数是用 QByteArray::fromRawD
我有一个非常简单的加密/解密程序。加密后,我的程序将加密文本作为 QByteArray 返回,然后我将其保存到文本文件中。从文件中检索 ByteArray 进行解密时,我不确定它的格式是否正确,或者文
请帮助进行这些转换。这是输入; QByteArray byteArr; QBitArray bitArr; QFile file(adress); byteArr.readAll(file); 从字节
检查 QByteArray 的大小总是返回 4 个字节,我假设是由于 Qt 中隐式共享数据: int n = 50; //or n = 100, 200 QByteArray arr(n,'a');
我需要编写一个函数来获取 optional 的所有权的底层数组。 在Rust中,是这样实现的: fn my_func(f: &mut Option>) -> Box { //how to d
我想创建 SerialPort 类,它可以自动接收消息,然后发出信号。 但是当我编译它时显示错误信息: error: 'QObject' is an ambiguous base of 'Serial
正如您可能从标题中发现的那样,我在转换 QByteArray 时遇到了问题。为整数。 QByteArray buffer = server->read(8192); QByteArray q_si
我目前在使用 QSerialPort 时遇到了一些问题:当我使用一个示例中的函数时,它看起来像 QKeyEvent *e; emit getData(e->text().toLocal8Bit());
我有一个像这样的自定义结构: struct aReminderStruct{ QString name; QDate date; QTime time; QString
我正在使用 Qt 和 C++。我必须管理电子板的错误代码。我可以以必须将其转换为 QVariant 的 QByteArray 的形式获取这些错误。我没有找到任何实用的方法来做到这一点(所以如果你有一个
使用 QByteArray QIODevice::readAll()从 QT5 开始,我能够从 txt 文件或图像制作字节数组,之后使用解码并正确地重新创建文件。但是,当我尝试使用 .db 文件 (S
我有一个文本编辑器,我在其中键入十六进制数字,然后将此文本转换为 QByteArray。 这是我的代码: QByteArray parsedValue = QByteArray::fromHex(ex
尝试编写一个非常简单的 Qt 程序(因为这就是我的全部能力!)... ...我已将一个相当小的二进制文件读入 QbyteArray,我可以看到 QByteArray 正确地保存了该数据。我想将一个指向
我有以下代码需要从纯 C++ 转换为 qt: // txMessage and UserData are char arrays memcpy(&txMessage[18], UserData, 8)
我想在 Qt 中将数组转换为 QByteArray。有人可以解释这个概念吗?请举例说明。 最佳答案 QByteArray 有一个 constructor就是这样做的。 这是如何使用它: const c
为什么声明: QByteArray data (initialized somehow); if(data.at(0) == 0xFF) do_something(); 发出这样的警告:由于数据类型
从 QByteArray 开始,我想在我的 QByteArray 中搜索“\n”字符,并将所有字符从头到“\n”连接起来,并将它们保存在 QString 中;之后,我将传递到下一个“\n”之前的以下字
我需要转换一个 QString 这是 已经以十六进制格式转换为 QByteArray。例如: QString a = "AF5603B4" 应存储在 QByteArray 中: QByteArray
在我的程序中,我经常使用串行通信,所以 QByteArray经常使用。 我想知道是否有更短的方法来初始化 QByteArray具有特定字节比: const char test_data[] = {
我是一名优秀的程序员,十分优秀!