【QT学习笔记】QThread的使用

这篇博客介绍了如何在QT框架下创建一个继承自QThread的类来实现线程。通过定义一个布尔变量和StopThread函数,可以从外部控制线程的停止。在线程的run函数中,使用while循环和信号发射,并在接收到停止信号时退出循环并调用quit。在关闭事件中,确保线程安全关闭并等待其退出。
摘要由CSDN通过智能技术生成

QT中通过创建一个继承于QThread的类,实现其中的虚函数void run()的方式来使用线程。

使用方式

1.创建一个继承于QThread的类

2.定义一个bool类型的变量,和StopThread函数,让外部能够控制线程的结束

2.重写虚函数void run()

3.调用start启动

4.在关闭对话框的时候(closeEvent事件)关闭并等待线程的退出

#include <QThread>

class MyThread : public QThread
{
    Q_OBJECT
public:
    MyThread(QObject* parent = nullptr);
    void StopThread();

protected:
    void run();

signals:
    void connter();

private:
    bool stop;
};
#include "mythread.h"

MyThread::MyThread(QObject* parent)
{
    stop = false;
}

void MyThread::StopThread()
{
    stop = true;
}

void MyThread::run()
{
    while (!stop) {
        emit connter();
        msleep(1000);
    }
    quit();
}
myThread = new MyThread();

void Thread::closeEvent(QCloseEvent *event)
{
    MyThread *thread =  this->findChild<MyThread*>();
    if(thread == nullptr)
        return;
    if(thread->isRunning())
    {
        thread->StopThread();
        thread->wait();
    }
    event->accept();
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值