QT多執行緒的使用 一 moveToThread

2021-10-10 20:48:14 字數 1415 閱讀 2117

qt有兩種實現多執行緒的方法,方法一是「子類化qthread,然後去重寫run函式,實現多執行緒」。方法二是「子類化qobject,然後使用movetothread函式實現多執行緒」。由於qt官方推薦使用第二種方法,所以這裡主要介紹一下,如何通過子類化qobject去實現多執行緒。

#ifndef work_h

#define work_h

#include

#include

class

work

:public qobject

;#endif

// work_h

其次,我們在work.cpp中去完善建構函式與功能函式的**,**如下:

#include

"work.h"

#include

work::

work

(qobject *parent)

:qobject

(parent)

void work::

thread_fun()

第三步,我們在mainwindow.h中新增各種標頭檔案,然後建立乙個signals訊號,宣告乙個執行緒和剛剛建立的work類。

#ifndef mainwindow_h

#define mainwindow_h

#include

#include

#include

"work.h"

namespace ui

class

mainwindow

:public qmainwindow

;#endif

// mainwindow_h

最後我們在mainwindow.cpp中,先例項化thread_test執行緒和work類,然後連線這個訊號與槽函式。並且把work這個類推向子執行緒,並且開啟子執行緒。**如下:

#include

"mainwindow.h"

#include

"ui_mainwindow.h"

mainwindow::

mainwindow

(qwidget *parent)

:qmainwindow

(parent),ui

(new ui::mainwindow)

mainwindow::

~mainwindow()

通過傳送訊號tothread(),連線槽函式執行thread_fun()。可以看到最後的輸出結果,確實不在同乙個執行緒裡面,說明多執行緒配置是成功的。

QT多執行緒的使用(moveToThread方法)

qt有兩種實現多執行緒的方法,一種是 子類化qthread,然後去重寫run函式,實現多執行緒 一種是 子類化qobject,然後使用movetothread函式實現多執行緒 由於qt官方推薦使用第二種方法,所以我這裡主要介紹一下,如何通過子類化qobject去實現多執行緒。首先,我們寫乙個繼承qo...

QT 多執行緒 使用UI

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

Qt 多執行緒使用moveToThread

qt有兩種多執行緒的方法,其中一種是繼承qthread的run函式,另外一種是把乙個繼承於qobject的類用movetothread函式轉移到乙個thread裡。qt4.8之前都是使用繼承qthread的run這種方法,但是qt4.8之後,qt官方建議使用第二種方法。具體的使用步驟如下 1.從qo...