QT 多執行緒應用

2021-09-12 08:07:59 字數 2379 閱讀 6010

qt多執行緒的實現有兩種方法,一種是繼承qthread的多執行緒使用方法,另外一種是使用qobject實現多線的方法。傳統的方式是繼承qtread,但是這種方式比較的容易出錯,qt官方推薦使用的是第二種方式。這裡介紹這兩種方式的最簡單的一種建立方式。

******threadone.h

#ifndef ******threadone_h

#define ******threadone_h

#include class ******threadone : public qthread

;#endif // ******threadone_h

******threadone.cpp

#include "******threadone.h"

#include ******threadone::******threadone()

******threadone.h

#ifndef ******threadone_h

#define ******threadone_h

#include class ******threadone : public qthread

;#endif // ******threadone_h

******threadone.cpp

#include "******threadone.h"

#include ******threadone::******threadone()

void ******threadone::run()

}

#include "mainwindow.h"

int main(int argc, char *ar**)

******threadtwo.h

#ifndef ******threadtwo_h

#define ******threadtwo_h

#include class ******threadtwo : public qobject

;#endif // ******threadtwo_h

******threadtwo.cpp 

#include "******threadtwo.h"

#include #include ******threadtwo::******threadtwo(qobject *parent) : qobject(parent)

void ******threadtwo::dosomething()

}

dosomething 是乙個槽函式,通過訊號呼叫該槽函式啟動迴圈函式。該訊號由主線程傳送。

我qt裡的主線程是mainwindow。mainwindow.h**如下:

#ifndef mainwindow_h

#define mainwindow_h

#include #include "******threadtwo.h"

namespace ui

class mainwindow : public qmainwindow

;#endif // mainwindow_h

主線程通過sendstart函式傳送自定義的訊號signal1,從而觸發 ******threadtwo 執行緒的迴圈函式。

mainwindow.cpp

#include "mainwindow.h"

#include "ui_mainwindow.h"

#include mainwindow::mainwindow(qwidget *parent) :

qmainwindow(parent),

ui(new ui::mainwindow)

void mainwindow::sendstart()

mainwindow::~mainwindow()

執行效果如下:

從上圖可以看到兩種方式建立的執行緒都正常的跑起來了。

qt使用多執行緒的一些心得——1.繼承qthread的多執行緒使用方法

qt使用多執行緒的一些心得——2.繼承qobject的多執行緒使用方法

qt開發(三十四)——qt多執行緒程式設計

另外下面幾篇部落格對qt多執行緒有更好的乙個描述:

《qt 多執行緒程式設計(也有不少例子) 》

《qt多執行緒學習:建立多執行緒》

Qt多執行緒應用 QRunnable

main.cpp view plain include include include include runnableinst.h qprogressbar progressbar progressbar.setvalue 50 progressbar.show runnableinst hins...

qt 多執行緒

qt通過三種形式提供了對執行緒的支援。它們分別是,一 平台無關的執行緒類,二 執行緒安全的事件投遞,三 跨執行緒的訊號 槽連線。這使得開發輕巧的多執行緒qt程式更為容易,並能充分利用多處理器機器的優勢。多執行緒程式設計也是乙個有用的模式,它用於解決執行較長時間的操作而不至於使用者介面失去響應。在qt...

Qt 多執行緒

qt 包含下面一些執行緒相關的類 qthread 提供了開始乙個新執行緒的方法 qthreadstorage 提供逐執行緒資料儲存 qmutex 提供相互排斥的鎖,或互斥量 qmutexlocker 是乙個便利類,它可以自動對 qmutex 加鎖與解鎖 qreadwriterlock 提供了乙個可以...