日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【Qt】创建线程程序示例

發(fā)布時(shí)間:2024/4/24 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Qt】创建线程程序示例 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

00. 目錄

文章目錄

    • 00. 目錄
    • 01. 概述
    • 02. 開(kāi)發(fā)環(huán)境
    • 03. 創(chuàng)建線程類子類
    • 04. 主窗口和程序
    • 05. 程序執(zhí)行結(jié)果
    • 06. 附錄

01. 概述

多線程編程可以有效解決在不凍結(jié)一個(gè)應(yīng)用程序用戶界面的情況下執(zhí)行一個(gè)耗時(shí)操作的問(wèn)題。線程相關(guān)內(nèi)容可以在幫助中通過(guò)"Thread Support in Qt"關(guān)鍵字查看。

02. 開(kāi)發(fā)環(huán)境

Windows系統(tǒng):Windows10

Qt版本:Qt5.15或者Qt6

03. 創(chuàng)建線程類子類

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. 主窗口和程序

主界面設(shè)計(jì)

dialog.h

#ifndef DIALOG_H #define DIALOG_H#include <QDialog>#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://啟動(dòng)線程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; }//啟動(dòng)線程 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. 程序執(zhí)行結(jié)果

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

06. 附錄

6.1 Qt教程匯總
網(wǎng)址:https://dengjin.blog.csdn.net/article/details/115174639

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

與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的【Qt】创建线程程序示例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。