在Qt中,可以使用信号与槽机制来在线程之间传递数据。对于传递QVector
以下是一个示例代码:
// 线程类 ThreadClass.h
#ifndef THREADCLASS_H
#define THREADCLASS_H
#include <QObject>
#include <QThread>
#include <QVector>
class ThreadClass : public QThread
{
Q_OBJECT
public:
explicit ThreadClass(QObject *parent = nullptr);
signals:
void dataReady(QVector<quint8> &dataArray); // 定义一个带有 QVector<quint8> & 参数的信号
protected:
void run() override;
};
#endif // THREADCLASS_H
// 线程类 ThreadClass.cpp
#include "ThreadClass.h"
ThreadClass::ThreadClass(QObject *parent) : QThread(parent)
{
}
void ThreadClass::run()
{
QVector<quint8> dataArray;
// 数据处理过程...
emit dataReady(dataArray); // 发送带有 QVector<quint8> & 参数的信号
}
// 主线程代码 MainThread.cpp
#include <QCoreApplication>
#include <QDebug>
#include "ThreadClass.h"
class MainThread : public QObject
{
Q_OBJECT
public slots:
void onDataReady(QVector<quint8> &dataArray)
{
// 在此处处理接收到的数据
qDebug() << "Received data size:" << dataArray.size();
for (const auto &value : dataArray)
{
qDebug() << value;
}
}
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
ThreadClass thread;
MainThread mainThread;
QObject::connect(&thread, &ThreadClass::dataReady, &mainThread, &MainThread::onDataReady);
thread.start();
return a.exec();
}
#include "MainThread.moc"
在上面的示例中,线程类 ThreadClass
继承自 QThread
,并定义了一个信号 dataReady
,参数是 QVectordataArray
进行处理,并通过 emit
关键字发送信号。
主线程类 MainThread
定义了槽函数 onDataReady
,用于接收来自线程的数据。在主线程中使用 QObject::connect()
函数将线程的信号与主线程的槽函数连接起来。
以上是一种基本的方法来传递 QVector
内容由零声教学AI助手提供,问题来源于学员提问