0
点赞
收藏
分享

微信扫一扫

QT编程:通过继承QThread实现的线程任务

乐百川 2022-05-09 阅读 41


QT编程:通过继承QThread实现的线程任务_虚函数

QT中的线程使用有两种方法,一种是通过继承QThread,另一种是通过继承QObject,以下通过第一种方式实现,即通过继承QThread来实现。

过程:

1、继承QThread

2、重写虚函数run()


Mythread.h文件


#ifndef MYTHREAD_H
#define MYTHREAD_H

#include <QObject>
#include <QThread>
#include <QTimer>

class Mythread : public QThread
{
Q_OBJECT
public:
explicit Mythread(QObject *parent = nullptr);
~Mythread();

protected:
void run();

signals:
void isDone();
private:

};

#endif // MYTHREAD_H


Mythread.cpp文件


#include "mythread.h"

Mythread::Mythread(QObject *parent) : QThread(parent)
{
}

Mythread::~Mythread()
{
}

void Mythread::run()
{
this->sleep(5);

emit isDone();

}

本次功能展示中,使用定时器结合线程睡眠的方式使QLcdNumber的数字不断刷新,如果不使用独立开出一条线程出来处理,线程睡眠过程中将导致UI界面卡死。而采用了单独开一条线程出来处理的方式就不会出现UI页面卡死的情况。

完整代码下载路径


https://gitee.com/HGSheng/QT_thread_for_QThread_V1


演示效果

QT编程:通过继承QThread实现的线程任务_虚函数_02

额外补充

线程函数(重写虚函数)
void QThread::run()

启动线程
void QThread::start(Priority priority = InheritPriority)

线程优先级
enum Priority { IdlePriority, LowestPriority, LowPriority, NormalPriority, ..., InheritPriority }

退出线程
void QThread::exit(int returnCode = 0)

杀死线程
void QThread::terminate()

设置线程栈
void QThread::setStackSize(uint stackSize)

等待线程
bool QThread::wait(unsigned long time = ULONG_MAX)

休眠
void msleep(unsigned long msecs)
void sleep(unsigned long secs)
void usleep(unsigned long usecs)



举报

相关推荐

0 条评论