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

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

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

Qt線程

Qt4.7之前版本處理步驟

1.自定義一個(gè)類,繼承于QThread。

class MyThread:public QThread{
public:
    vid run();	//虛函數(shù)  線程處理函數(shù)(和主線程不在同一個(gè)線程)
    
signals:
    void isDone();	//信號(hào) 線程執(zhí)行完發(fā)送
}
void MyThread::run() {
    // 實(shí)現(xiàn)  -- 復(fù)雜的處理過程
    
    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é)束信號(hào)和線程結(jié)束槽

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

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

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

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

建議使用quit()

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

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

新用法處理步驟

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

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

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.處理事件、鼠標(biāo)按下開啟和關(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. 啟動(dòng)子線程,只是把線程啟動(dòng)了,并沒有啟動(dòng)線程處理函數(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實(shí)現(xiàn)多線程兩種方式案例詳解的文章就介紹到這了,更多相關(guān)QT實(shí)現(xiàn)多線程兩種方式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

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

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

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

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

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

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

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

    VC++?2019?"const?char*"類型的實(shí)參與"LPCTSTR"

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

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

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

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

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

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

    這篇文章主要為大家詳細(xì)介紹了利用C語言實(shí)現(xiàn)三子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    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)部工作機(jī)制詳解

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

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

最新評論

武定县| 上林县| 湾仔区| 金寨县| 大荔县| 岳阳县| 石柱| 河源市| 盱眙县| 乐至县| 莎车县| 来宾市| 陵水| 西乌| 瑞安市| 泰宁县| 宁阳县| 达拉特旗| 宜都市| 仁布县| 南投县| 泉州市| 乌兰察布市| 文登市| 绥化市| 大宁县| 徐水县| 大足县| 乐安县| 扎鲁特旗| 兰坪| 基隆市| 岐山县| 弋阳县| 道真| 胶南市| 丹凤县| 侯马市| 江陵县| 民乐县| 龙山县|