Qt訊號槽中引數的元物件註冊

2021-10-13 05:19:48 字數 419 閱讀 7792

最近專案中遇到乙個問題:執行緒中的槽函式總是無法響應。

原因:費了九牛二虎之力終於找到問題之所在,原來是所用的訊號槽中的引數型別不是qt的自帶的基礎型別,而是自定義型別,qt的訊號槽在主線程和子執行緒中只能傳遞qt的基礎資料型別,比如qstring、int等(不是執行緒與執行緒間傳遞不存在這個問題),所以我這裡主線程和子執行緒無法通過訊號槽來傳遞自定義引數。

解決方案:註冊引數的元物件型別。

qregistermetatype>

>

("qvector");

qregistermetatype

>

("qlist>");

qregistermetatypeint, qstring>

>

("qpair"

);

Qt槽和訊號引數

qt的訊號只需要申明。不需要定義 signals void signala int a qt的槽和普通的成員函式是一樣的,可以加上public potected 以及virtual等標記 public void slota int a 把這兩個用connect連線起來,這裡的signal signa...

QT訊號槽傳遞引數技巧

訊號槽如何傳遞引數 或帶引數的訊號槽 利用qt進行程式開發時,有時需要訊號槽來完成引數傳遞。帶引數的訊號槽在使用時,有幾點需要注意的地方,下面結合例項進行介紹。第一點 當訊號與槽函式的引數數量相同時,它們引數型別要完全一致。訊號 cpp view plain void isignal intb 槽 ...

Qt帶引數的訊號和槽

在qt的開發過程中,訊號帶引數是很常見的,在使用帶引數的訊號槽時,有以下幾點需要注意。訊號和槽函式的宣告 signals void isignal int b void strsignal qstring str public slots void islots int b void strslot...