最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

QT實現(xiàn)多線程兩種方式案例詳解

 更新時間:2021年08月18日 10:19:49   作者:去留意  
這篇文章主要介紹了QT實現(xiàn)多線程兩種方式案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下

Qt線程

Qt4.7之前版本處理步驟

1.自定義一個類,繼承于QThread。

class MyThread:public QThread{
public:
    vid run();	//虛函數(shù)  線程處理函數(shù)(和主線程不在同一個線程)
    
signals:
    void isDone();	//信號 線程執(zhí)行完發(fā)送
}
void MyThread::run() {
    // 實現(xiàn)  -- 復雜的處理過程
    
    emit isDome;	// 發(fā)送線程
};

2.定義線程

MyThread thread;

3.開啟線程

thread.start();

不能通過直接調(diào)用run()函數(shù),通過start()函數(shù)間接調(diào)用run()函數(shù)。

4.自定義線程結(jié)束槽函數(shù)

public:
	void dealDone();
——————————————————————
void Widget::dealDone(){
    // 線程結(jié)束后的操作
}

5.綁定線程結(jié)束信號和線程結(jié)束槽

connect(&thread,&MyThread::isDone,this,&Widget::dealDone);

6.定義線程關(guān)閉槽函數(shù)

void Widget::stopThread(){
    // 停止線程
    thread->quit();
    // 等待線程運行完成之后結(jié)束
    thread->wait();
}

建議不要使用terminate()容易出現(xiàn)內(nèi)存問題

建議使用quit()

7.綁定窗口關(guān)閉信號和線程關(guān)閉槽函數(shù)

connect(this,&Widget::destroyed,this,&Widget::stopThread);

新用法處理步驟

1.設(shè)定一個類,繼承于QObject。

2.類中設(shè)置一個線程函數(shù)(只有一個函數(shù)是線程函數(shù))和線程開始信號。

class MyThread : public QObject
{
    Q_OBJECT
public:
    explicit MyThread(QObject *parent = nullptr);

    void run();
    void start();
    void stop();

signals:
    void myThreadrun();

private:
    bool isrun;
public slots:
};
void MyThread::run(){
    while(isrun == true) {
        QThread::sleep(1);
        emit myThreadrun();
        qDebug() << "子線程:" << QThread::currentThread();
        if(isrun == false) break;
    }
}
void MyThread::start() {
    qDebug() << "開始";
    this->isrun = true;
}

void MyThread::stop(){
    qDebug() << "停止";
    this->isrun = false;
}

3.創(chuàng)建線程對象(不能指定對象)和 QThread子線程對象

MyThread *mythread;
QThread *thread;
-------------------------------------------------------------------------------------------
this->mythread = new MyThread;
this->thread = new QThread(this);

4.處理事件、鼠標按下開啟和關(guān)閉事件、窗口關(guān)閉事件處理

void Widget::dealThread() {
    static int i = 0;
    i++;
    ui->lcdNumber->display(i);
}
void Widget::on_pushButton_strat_clicked()
{
    if(thread->isRunning() == true){
        return;
    }
    thread->start();
    mythread->start();
    emit runThread();

}
void Widget::on_pushButton_stop_clicked()
{
    if(thread->isRunning() == false){
        return;
    }
    mythread->stop();
    thread->quit();
    thread->wait();
}
void Widget::dealThreadclose() {
    on_pushButton_stop_clicked();
    delete mythread;
}

5.把自定義線程類加到子線程

mythread->moveToThread(thread);
connect(mythread,&MyThread::myThreadrun,this,&Widget::dealThread);

6. 啟動子線程,只是把線程啟動了,并沒有啟動線程處理函數(shù)。

```C++
connect(mythread,&MyThread::myThreadrun,this,&Widget::dealThread);
connect(this,&Widget::runThread,mythread,&MyThread::run);
qDebug() << "主線程:" << QThread::currentThread();
connect(this,&Widget::destroyed,this,&Widget::dealThreadclose);

到此這篇關(guān)于QT實現(xiàn)多線程兩種方式案例詳解的文章就介紹到這了,更多相關(guān)QT實現(xiàn)多線程兩種方式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言項目全正整數(shù)后再計算的三種參考解答方法

    C語言項目全正整數(shù)后再計算的三種參考解答方法

    今天小編就為大家分享一篇關(guān)于C語言項目全正整數(shù)后再計算的三種參考解答方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • 淺析C++中單鏈表的增、刪、改、減

    淺析C++中單鏈表的增、刪、改、減

    以下是對C++中單鏈表的增、刪、改、減進行了詳細的介紹,需要的朋友可以過來參考下
    2013-09-09
  • QT獲取顯示當前時間和日期的方法(用QTime,QDate和QDateTime)

    QT獲取顯示當前時間和日期的方法(用QTime,QDate和QDateTime)

    獲取當期日期時間在我們?nèi)粘i_發(fā)中經(jīng)常會遇到,下面這篇文章主要給大家介紹了關(guān)于QT獲取顯示當前時間和日期的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • C語言計算分段函數(shù)問題

    C語言計算分段函數(shù)問題

    這篇文章主要介紹了C語言計算分段函數(shù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • VC++?2019?"const?char*"類型的實參與"LPCTSTR"類型的形參不兼容解決

    VC++?2019?"const?char*"類型的實參與"LPCTSTR"

    這篇文章主要給大家介紹了關(guān)于VC++?2019?"const?char*"類型的實參與"LPCTSTR"類型的形參不兼容的解決方法,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2023-03-03
  • C/C++中#define的妙用分享

    C/C++中#define的妙用分享

    本文主要介紹了C++/C關(guān)于#define的一些妙用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • C語言深入探究斐波那契數(shù)列

    C語言深入探究斐波那契數(shù)列

    斐波那契數(shù)一般指斐波那契數(shù)列。 斐波那契數(shù)列(Fibonacci sequence),又稱黃金分割數(shù)列,因數(shù)學家萊昂納多·斐波那契(Leonardo Fibonacci)以兔子繁殖為例子而引入,故又稱為兔子數(shù)列
    2022-05-05
  • 利用C語言實現(xiàn)三子棋游戲

    利用C語言實現(xiàn)三子棋游戲

    這篇文章主要為大家詳細介紹了利用C語言實現(xiàn)三子棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • Qt串口通信開發(fā)之QSerialPort模塊Qt串口通信接收數(shù)據(jù)不完整的解決方法

    Qt串口通信開發(fā)之QSerialPort模塊Qt串口通信接收數(shù)據(jù)不完整的解決方法

    這篇文章主要介紹了Qt串口通信開發(fā)之QSerialPort模塊Qt串口通信接收數(shù)據(jù)不完整的解決方法,需要的朋友可以參考下
    2020-03-03
  • C++析構(gòu)函數(shù)內(nèi)部工作機制詳解

    C++析構(gòu)函數(shù)內(nèi)部工作機制詳解

    析構(gòu)函數(shù)(Destructor)也是一種特殊的成員函數(shù),沒有返回值,不需要程序員顯式調(diào)用(程序員也沒法顯式調(diào)用),而是在銷毀對象時自動執(zhí)行。構(gòu)造函數(shù)的名字和類名相同,而析構(gòu)函數(shù)的名字是在類名前面加一個~符號
    2023-02-02

最新評論

西城区| 陕西省| 兴山县| 朝阳区| 同德县| 蓝田县| 外汇| 遵义县| 沐川县| 青神县| 昌图县| 西乌珠穆沁旗| 长兴县| 山丹县| 吉木萨尔县| 布尔津县| 浦北县| 庐江县| 宁都县| 莱阳市| 通江县| 当阳市| 盐池县| 安福县| 富阳市| 芜湖县| 泉州市| 博白县| 同心县| 积石山| 正阳县| 丹巴县| 宁陕县| 泗水县| 绥阳县| 安顺市| 中阳县| 高台县| 大新县| 公主岭市| 方正县|