Qt 多執行緒使用moveToThread

2021-10-03 04:37:11 字數 1145 閱讀 6592

qt有兩種多執行緒的方法,其中一種是繼承qthread的run函式,

另外一種是把乙個繼承於qobject的類用movetothread函式轉移到乙個thread裡。 

qt4.8之前都是使用繼承qthread的run這種方法,但是qt4.8之後,qt官方建議使用第二種方法。

具體的使用步驟如下:

1.從qobject派生乙個類,將耗時的工作寫在該類的槽函式中。

2.將派生類物件移動到乙個qthread中,該執行緒需要start。(這一步使用movetothread)

3.通過訊號連線派生類的槽函式,並通過訊號觸發槽函式。(槽函式在子執行緒中執行)

#ifndef tes_h

#define tes_h

;#endif // tes_h

#include "tes.h"

worker::worker(qobject *parent):qobject(parent)

worker::~worker()

void worker::slot_dowork()

#ifndef mainwindow_h

#define mainwindow_h

#include #include "tes.h"

namespace ui

class mainwindow : public qmainwindow

;#endif // mainwindow_h

#include "mainwindow.h"

#include "ui_mainwindow.h"

mainwindow::mainwindow(qwidget *parent) :

qmainwindow(parent),

ui(new ui::mainwindow)

mainwindow::~mainwindow()

void mainwindow::dowork()

void mainwindow::slot_finish()

#include "mainwindow.h"

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

QT 多執行緒 使用UI

直接上 qt的ui操作必須在主線程做的,分支執行緒只能傳送訊息給主線程進行引導操作。所以平常我們的 都是直接使用乙個執行緒來調動ui,但是不同的執行緒同時需要使用ui來顯示結果之類的就需要相互協調 如果沒有invoke之類的方法,可以考慮直接使用qt 的qthread 直接使用thread會衝突 1...

qt 多執行緒

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

Qt 多執行緒

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