【Qt】创建线程程序示例

00. 目录

01. 概述

多线程编程可以有效解决在不冻结一个应用程序用户界面的情况下执行一个耗时操作的问题。线程相关内容可以在帮助中通过"Thread Support in Qt"关键字查看。

02. 开发环境

Windows系统:Windows10

Qt版本:Qt5.15或者Qt6

03. 创建线程类子类

mythread.h文件

#ifndef MYTHREAD_H
#define MYTHREAD_H

#include <QThread>
#include <QObject>

class MyThread : public QThread
{
    Q_OBJECT
public:
    MyThread(QObject *parent = 0);
    ~MyThread();

    void stop();

protected:
    void run();

private:
    volatile bool stopped;
};

#endif // MYTHREAD_H

mythread.cpp文件

#include "mythread.h"

#include <QDebug>

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

MyThread::~MyThread()
{

}

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

void MyThread::run()
{
    qreal i = 0;

    while(!stopped)
    {
        qDebug() << QString("子线程: %1").arg(i);
        msleep(1000);

        i++;
    }

    stopped = false;
}

04. 主窗口和程序

主界面设计
在这里插入图片描述

dialog.h

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>

#include "mythread.h"

QT_BEGIN_NAMESPACE
namespace Ui { class Dialog; }
QT_END_NAMESPACE

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = nullptr);
    ~Dialog();

private slots:
    //启动线程
    void on_pushButton_clicked();
    //终止线程
    void on_pushButton_2_clicked();

private:
    Ui::Dialog *ui;

    MyThread thread;
};
#endif // DIALOG_H

dialog.cpp

#include "dialog.h"
#include "ui_dialog.h"

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
    , ui(new Ui::Dialog)
{
    ui->setupUi(this);
}

Dialog::~Dialog()
{
    delete ui;
}

//启动线程
void Dialog::on_pushButton_clicked()
{
    thread.start();

    ui->pushButton->setEnabled(false);
    ui->pushButton_2->setEnabled(true);

}

//终止线程
void Dialog::on_pushButton_2_clicked()
{
    if (thread.isRunning())
    {
        thread.stop();

        ui->pushButton->setEnabled(true);
        ui->pushButton_2->setEnabled(false);
    }
}

05. 程序执行结果

"子线程: 0"
"子线程: 1"
"子线程: 2"
"子线程: 3"
"子线程: 4"
"子线程: 5"

06. 附录

6.1 Qt教程汇总
网址:https://dengjin.blog.csdn.net/article/details/115174639

6.2 程序下载
下载:2Thread.rar

© 版权声明
THE END
喜欢就支持一下吧
点赞3 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容