第四講 深入介紹訊號與槽

2022-08-22 13:57:10 字數 1738 閱讀 8878

本文概要:講解qt的訊號與槽機制,涉及訊號與槽的連線方法,連線條件等。

可以使用訊號與槽機制的類

訊號與槽機制是在qobject類中實現的,這種機制能夠用與任何qobject子類中,但是應該在類

中加入q_object巨集。

槽的介紹:

槽與普通的c++成員函式幾乎一樣;槽能夠被宣告為虛函式,能被過載,能夠被其他函式呼叫等,與c++普通

的成員函式不同之處僅僅在於槽可以與訊號連線在一起,每當發射與槽可以接受的訊號時,槽會被自動呼叫。

槽與訊號的連線方法:

connect(sender, signal(signal), receiver, slot(slot));

sender和receiver都應該為指向qobject的指標,signal與slot為不帶引數的函式名;

signal與slot巨集會將它們的引數轉換為相應的字串。

槽與訊號連線的可能情況:

乙個訊號連線多個槽

connect(slider, signal(valuechanged(int

)), spinbox, slot(setvalue(

int))); connect(slider, signal(valuechanged(

int)),

this, slot(updatastatusbarindicator(int)));

當發射訊號時,會以不確定的順序呼叫這些槽;

多個訊號連線乙個槽

connect(lcd, signal(overflow()),

this

, slot(handlematherror())); connect(calculator, signal(divisionbyzeor()),

this, slot(handlematherror()));

無論發射那個訊號都會呼叫連線的槽;

訊號可以與另外乙個訊號連線:

connect(lineedit, signal(textchanged(const qstring &

)),

this, signal(updatarecord(const qstring &)));

當發射第乙個訊號時,第二個訊號也會被傳送,除此之外,訊號的相互連線與訊號

與槽的連線難以區分。

訊號與槽(或者訊號)的連線可以被移除

disconnect(lcd, signal(overflow( )),

this, slot(handlematherror( )));

一般情況下較少用到。另外,當刪除物件時,qt會自動與這個物件相關的所有連線;

訊號與槽(或者訊號)成功連線的條件

訊號與槽的順序必須有相同的順序與相同的型別,如果訊號的引數

比它所連線的槽的引數多,多餘的引數會被忽略。另外,在訊號與槽使用connect()連線時,

訊號與槽的

名字中不能包含引數名。

Qt中深入介紹訊號和槽

訊號和槽機制是qt程式設計的基礎。槽和普通的c 成員函式幾乎是一樣的 它們可以是虛函式 virtual 也可被過載 overload 可以是公有的 public 保護的 protective 也可是私有的 private 它們可以象任何 c 成員函式一樣被呼叫,可以傳遞任何型別的引數。唯一不同在於,...

第四講 李群與李代數

1.當三維旋轉矩陣構成了特殊正交群so 3 兩個旋轉矩陣相乘表示做了兩次旋轉,對於這種只有乙個運算的集合,我們稱之為群 2.旋轉矩陣集合和矩陣乘法構成群,同樣變換矩陣和矩陣乘法也構成群 因此才能稱為旋轉矩陣群和變換矩陣群 3.每乙個李群都有對應的李代數 1 對於乙個旋轉矩陣與它的轉置的乘積為單位陣,...

第二章 建立對話方塊 2 2深入介紹訊號和槽

訊號和槽機制是qt程式設計的基礎,可以程式設計師把互不了解的物件繫結在一起。槽和普通的c 成員函式幾乎是一樣的,但唯一的不用是 槽還可以跟訊號連線在一起。每當發射訊號就會自動呼叫這個槽。connect的語句看起來這樣的 connect sender,signal signal receiver,sl...