QT 多執行緒 使用UI

2021-09-06 15:28:21 字數 1427 閱讀 7990

直接上**:

qt的ui操作必須在主線程做的,分支執行緒只能傳送訊息給主線程進行引導操作。

所以平常我們的**都是直接使用乙個執行緒來調動ui,但是不同的執行緒同時需要使用ui來顯示結果之類的就需要相互協調;

如果沒有invoke之類的方法,可以考慮直接使用qt 的qthread;直接使用thread會衝突;

1    需要使用ui的執行緒所在的類必須是繼承自qthread; 標頭檔案#include

定義 訊號函式

#include #include#includeusing namespace std;

class qtgui :public qthread

}

4 啟動run執行緒

void qtgui::addd()

5 全部**  在這裡:

#pragma once

#include #include#includeusing namespace std;

class qtgui :public qthread

;#include "qtgui.h"

qtgui::qtgui(qobject *parent)

: qthread(parent)

qtgui::~qtgui()

void qtgui::run()

}void qtgui::addd()

void qtgui::porcess()

}#pragma once

#include #include "ui_threadgui.h"

#include"qtgui.h"

class threadgui : public qmainwindow

;#include "threadgui.h"

threadgui::threadgui(qwidget *parent)

: qmainwindow(parent)

);*/

g2 = new qtgui(this);

g2->k = 1;

g2->timee = 50;

//connect(g2, &qtgui::sigcurrentimage2, [=](int img) );

connect(g1, signal(sigcurrentimage2(int)), this, slot(slot3(int)));

connect(g2, signal(sigcurrentimage2(int)), this, slot(slot3(int)));

}void threadgui::slot3(int k)

else

}void threadgui::slot1()

void threadgui::slot2()

Qt 多執行緒使用moveToThread

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

qt 多執行緒

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

Qt 多執行緒

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