QT跨執行緒連線訊號和槽

2021-07-31 13:10:48 字數 1212 閱讀 2861

對qt的訊號和槽理解較為初級,今天通過多次嘗試,終於學會了跨執行緒連線訊號和槽。其基本方法如下。

1. 無引數傳遞時

(1)定義:

signal:

void signal1();

(2)連線部分寫法:

connect( p_class1,                   //類1的指標

signal(signal1()), //類1的訊號

p_class2,                  // 類2的指標

slot(slot_func2())); //類2的槽函式

(3)釋放訊號寫法:

emit signal1();

2. 有引數傳遞時

(1)定義:

signal:

void signal1(type);

(2)連線部分寫法:

connect( p_class1,                   //類1的指標

signal(signal1(type)), //類1的訊號

p_class2,                  // 類2的指標

slot(slot_func2(type))); //類2的槽函式

(3)釋放訊號寫法:

emit signal1(type_example);

3.注意的問題

根據查閱網上資料,訊號的引數和槽的引數必須符合以下兩種情況之一:

(1)訊號的引數和槽的引數數量相同、型別一一對應也相同。

(2)訊號的引數多於槽的引數,但與槽的引數對應的訊號中的引數型別應一一對應相同。

另外,qt5中關於訊號和槽的繫結針對qt4有了較大改進,提供了一種新的繫結方式:

connect( p_class1,                   //類1的指標

&class1::signal1;    //類1的訊號

p_class2,                  // 類2的指標

&class2::func2;    //類2的函式

這兩種方式的區別可在網上找到比較好的解釋。在《qt5程式設計入門》(霍亞飛等編著)一書中,對qt5新提供方式的優點介紹如下:

QT訊號槽的跨執行緒連線

qt中的執行緒可以通過繼承qthread類,重寫run 函式,run 函式即新執行緒的入 通過start 函式啟動新執行緒 我我們實現的這個qthread的派生類,只不過是用來管理執行緒的。run 函式返回,新執行緒結束,可以在呼叫 exec 函式,在新執行緒中也開啟時間迴圈。繼承自qobject的...

Qt跨執行緒的訊號和槽的使用

connect用於連線qt的訊號和槽,在qt程式設計過程中不可或缺。它其實有第五個引數,只是一般使用預設值,在滿足某些特殊需求的時候可能需要手動設定。qt autoconnection 1 ifndef mainwindow h 2 define mainwindow h 3 4 include 5...

QT 訊號和槽連線問題

1 networ 程連線設定介面 不要用訊號和槽 connect network getinstance this,x netwok網路連線後傳送訊號emit 但是這樣會導致 network已經連線成功,且emit了訊號,但是connect連線還沒成功,所以介面上的槽函式不會響應 解決方案 在net...