1、新建C++类:DataProcessForMiYi
.h文件
#pragma once
#include <QtWidgets/qdialog.h>
#include <QObject>
#include <QMessageBox>
#include <qthread.h>
class DataProcessForMiYi : public QObject
{
Q_OBJECT
public:
DataProcessForMiYi();
~DataProcessForMiYi();
public slots:
void DataProcessForMY(double a);
signals:
void StartProcessing(double a );
void stopp();
};
新建的类文件若没有继承关系,可以人为添加 继承与 : public QObject
2、主线程中开辟新的线程,并建立链接关系
DataProcessThread = new QThread;
DataProcessForMY = new DataProcessForMiYi;
DataProcessForMY->moveToThread(DataProcessThread);
connect(DataProcessThread, &QThread::finished, DataProcessThread, &QThread::deleteLater);
connect(DataProcessForMY, &DataProcessForMiYi::StartProcessing, DataProcessForMY, &DataProcessForMiYi::DataProcessForMY);
connect(this, SIGNAL(DataProcessForMY->stopp()), DataProcessForMY, SLOT(DataProcessForMY->stopp()), Qt::DirectConnection);
DataProcessThread->start();
3、程序推出的时候记得销毁线程句柄
if (DataProcessThread != NULL)
delete[] DataProcessThread;
总结:
在主线程中遇到需要数据处理的地方,触发信号,在子线程中处理槽函数,处理的结果可以通过共享内存传到内核或你其他想要的地方。