qt學習第五課 深入理解訊號和槽

2021-07-04 06:31:50 字數 1362 閱讀 3884

訊號和槽是qt程式設計的基礎,在qt中關聯訊號和槽用到的是

qobject::connect(const qobject * sender, const char * signal, const qobject * receiver, const char * method, qt::connectiontype type = qt::autoconnection);

其中的sender,receiver都是指向cobject的指標,signal和loat都是函式名 。

在使用中有一些值得注意的地方。比如:

qobject::connect(scrollbar, signal(valuechanged(int)),

label,  slot(setnum(int)));

// wrong

qobject::connect(scrollbar, signal(valuechanged(int value)),

label, slot(setnum(int value)));

函式的形參不能帶有變數名,當帶有變數名的時候就會出錯,return false;

訊號和槽連線的可能性:

1.乙個訊號可以連線多個槽

connect(slider , signal(valuechanged(int))  ,  spinbox , slot(setvalue(int)) );

connect(slider , signal(valuechanged(int))  ,  this , slot(updatestatusbarindicator(int)) );

當傳送這個訊號的時候,會以不確定的順序乙個接乙個的呼叫這些槽

2.多個訊號連線同乙個槽

connect(slider , signal(valuechanged(int))  ,  this , slot(updatestatusbarindicator(int)) );

connect(lcd , signal(valuechanged(int))  ,  this , slot(updatestatusbarindicator(int)) );

3.乙個訊號連線另外乙個訊號

connect(lineedit ,  signal(textchanged(const qstring& ) ) ,  this , signal(updaterecord(const qstring &)));

當發射第乙個訊號的時候,也會發射第二個訊號

4.訊號的移除

bool qobject::disconnect(const qobject * sender, const char * signal, const qobject * receiver, const char * method);

這種情況很少使用,就不做介紹了

Linux學習第五課

vim編輯器 vi編輯器的提公升版 1 使用簡單 2 使用範圍廣 ctrl shift 增大字型 ctrl 縮小字型 三種模式 esc a,i,o 參考記事本 2 命令模式 複製 剪下 貼上 esc 搜尋 3 末行模式 儲存 退出 設定編 輯器環境設定 w 儲存 q 退出 wq 儲存並退出 wq 強...

HTML學習第五課

定義列表的 也叫做描述性列表,定義列表預設為為兩個層次,第一層為列表項標籤 dt 第二層為注釋項標籤 dd dt 和 dd 標籤通常是成對使用的,也可以乙個列表項對應於幾個解釋項,其格式為 第1項 注釋1第二項 注釋2第三項 注釋3 table 標籤定義html 簡單的html 由table 元素以...

深入理解Qt訊號槽

訊號槽機制是觀察者模式的一種應用,達到訂閱 發布的效果。與之類似的有c 中的委託機制,只是寫法有所不同。訊號槽實現的主體是connect函式,常有兩種寫法 利用signal slot巨集和使用 類名 函式的結構 需要注意connect除了可以連線訊號和槽,還可以連線訊號與訊號 單個訊號與多個槽 多個...