qt,使用moveToThread函式實現多執行緒

2021-07-11 11:19:49 字數 783 閱讀 6951

在qt中想實現多執行緒一般有兩種方法:1.繼承qthread,重寫run()函式;2.使用movetothread()函式。movetothread函式能將qobject派生類的物件移動到另一線程。呼叫此函式後,用訊號觸發該物件的槽函式,該槽函式就將執行於目標執行緒。

使用要點:

示例類:

class woker : public  qobject

public slots:

void slotdosomething();

示例**

worker* worker = new worker();

qthread* new_thread = new qthread(); //建立qthread物件

worker->movetothread(new_thread); //將工作物件移動到新執行緒

connect(this,signal(startwork), worker ,slot(slotdosomething()), qt::queuedconnection); //連線訊號和槽

new_thread->start(); //啟動執行緒

//需要執行slotdosomething時傳送訊號

emit startwork();

注意事項:

1.派生於qwidget的類沒有這個功能。

2.只有用訊號來觸發函式,函式才會執行於子執行緒,直接呼叫的話,函式還是會執行於呼叫函式的執行緒。

3.不要忘了啟動執行緒,呼叫start()函式。

4.連線訊號槽時使用qt::queuedconnection引數。

QT多執行緒的使用 一 moveToThread

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

qt初次使用

qt獲取當前系統時間並顯示 包含標頭檔案qdatatime qdatetime time qdatetime currentdatetime 獲取系統現在的時間 qstring str time.tostring yyyy mm dd hh mm ss 設定顯示格式 qdatetime轉換為qstr...

使用Qt資源

在qt做介面的時候經常會用到一些資源,如,國際化,qss等。在qt中可以放在構建目錄下,也可以放在工程目錄中。但是放在工程目錄下的打包的時候就麻煩一些。這裡以為例,介紹一下qt資源的使用方法。1.新建乙個qt視窗專案。然後選中再新建qt資源,這樣在qt專案列表出現了新的資料夾 資源。點開資源看到qr...