QT开发之多线程创建使用

tech2023-11-01  101

创建一个线程类,保存运行、退出和继续运行的功能函数

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(); /*对应满足后的功能*/ } }

 

最新回复(0)