- 新建一个workThread类,继承QThread
- 重写run方法
- 新建workThread类对象,在耗时任务处使用
具体实现例子:
样例中的构造函数传了code作为项目中所需的变量,个人测试时可以写个简单的实现
1. workThread.h
#ifndef WORKTHREAD_H
#define WORKTHREAD_H
#include <QThread>
#include "socketInterface.h"
class WorkThread : public QThread
{
public:
WorkThread(QString num);
private:
virtual void run();//任务处理线程
public:
QString code;
int isWorkOver=0;//线程任务是否完成
QString taskComplete="";
SocketInterface *m_socketInterfaceTask = new SocketInterface();
signals:
public slots:
};
#endif // WORKTHREAD_H
2. workThread.cpp
#include "workthread.h"
#include <QDebug>
WorkThread::WorkThread(QString num)
{
isWorkOver = 0;
code=num;
}
void WorkThread::run()
{
while(isWorkOver == 0){
sleep(1);
taskComplete = m_socketInterfaceTask->m_adjustmentTaskCompletion;
qDebug()<<taskComplete;
if(code == "2343030"){
if(taskComplete == "000000001000"){
isWorkOver=1;
break;
}
}
taskComplete = "";
}
}
3. 新建对象调用,如main.cpp中
WorkThread *taskThread = new WorkThread(code);
taskThread->start();
while(taskThread->isWorkOver==0){
Sleep(1000);
qDebug()<<"wait taskThread over";
}
taskThread->quit();
注意:quit是退出线程,terminate是销毁线程,后者如果使用不当可能会引起一些错误