最近專案中遇到乙個問題:執行緒中的槽函式總是無法響應。
原因:費了九牛二虎之力終於找到問題之所在,原來是所用的訊號槽中的引數型別不是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...