【Qt】创建线程程序示例
00. 目录
文章目录
- 00. 目录
- 01. 概述
- 02. 开发环境
- 03. 创建线程类子类
- 04. 主窗口和程序
- 05. 程序执行结果
- 06. 附录
01. 概述
多线程编程可以有效解决在不冻结一个应用程序用户界面的情况下执行一个耗时操作的问题。线程相关内容可以在帮助中通过"Thread Support in Qt"关键字查看。
02. 开发环境
Windows系统:Windows10
Qt版本:Qt5.15或者Qt6
03. 创建线程类子类
mythread.h文件
#ifndef MYTHREAD_H
#define MYTHREAD_H#include
#include 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 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 #include "mythread.h"QT_BEGIN_NAMESPACE
namespace Ui { class Dialog; }
QT_END_NAMESPACEclass Dialog : public QDialog
{Q_OBJECTpublic: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
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
