槽和普通的 c++成員函數(shù)很像。它們可以是虛函數(shù)(virtual),也可被重載
(overload),可以是公有的(public),保護的(protective),也可是私有的(private),
它們可以象任何 c++成員函數(shù)一樣被調(diào)用,可以傳遞任何類型的參數(shù)。不同在于一個槽函
數(shù)能和一個信號相連接,只要信號發(fā)出了,這個槽函數(shù)就會自動被調(diào)用。
1、一個信號可以連接到多個槽:
2、多個信號可以連接到一個槽
3、一個信號可以和另一個信號相連
connect(lineEdit, SIGNAL(textChanged(const QString &)),
this, SIGNAL(updateRecord(const QString &)));
4、連接可以被刪除
disconnect(lcd, SIGNAL(overflow()),this, SLOT(handleMathError()));
這個函數(shù)很少使用,一個對象刪除后,Qt 自動刪除這個對象的所有連接。
信號和槽函數(shù)必須有著相同的參數(shù)類型,這樣信號和槽函數(shù)才能成功連接:
如果信號里的參數(shù)個數(shù)多于槽函數(shù)的參數(shù),多余的參數(shù)被忽略:
如果參速類型不匹配,或者信號和槽不存在,在 debug 狀態(tài)時,Qt 會在運行期間給出
警告。如果信號和槽連接時包含了參數(shù)的名字,Qt 將會給出警告
但是信號和槽機制在 QObject 中就實現(xiàn)了, 可以實現(xiàn)在任何從 QObject 繼承的子類中。