在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...