创建一个线程类,保存运行、退出和继续运行的功能函数
myThread.h
#ifndef MYTHREAD_H
#define MYTHREAD_H
#include <QThread>
class MyThread : public QThread
{
Q_OBJECT
public:
MyThread();
void closeThread();
void startThread();
protected:
virtual void run();
private:
volatile bool isStop; //isStop是易失性变量,需要用volatile进行申明
signals:
void Updata_progress();
};
#endif // MYTHREAD_H
myThread.cpp
#include "mythread.h"
#include <QDebug>
#include <QMutex>
MyThread::MyThread()
:isStop(false)
{
}
void MyThread::closeThread()
{
isStop = true;
}
void MyThread::startThread()
{
isStop = false;
}
void MyThread::run()
{
while (1)
{
if(isStop)
break;
emit Updata_progress();
sleep(1);
}
}
使用:
头文件声明
#include "mythread.h"
private:
MyThread *mythread;
public slots:
void Updata_close_Thread();
/*线程初始化*/
mythread = new MyThread;
connect(mythread,&MyThread::Updata_progress, this, &类名称::Updata_close_Thread);
/*线程使用*/
mythread->startThread();
mythread->start();
/*每隔一秒钟响应一次*/
void 类名称::Updata_close_Thread()
{
if (判断是否满足条件)
{
mythread->closeThread();
mythread->quit();
mythread->wait();
/*对应满足后的功能*/
}
}