第二章 建立對話方塊 總結筆記2.1子類化對話方塊 通過前向宣告,編譯器就知道這個類已經存在,而不用寫出包含的標頭檔案。2.2深入訊號和槽(signals and slots in depth)
槽和普通的c++成員函式很像。它們可以是虛函式(virtual),也可被過載(overload),可以是公有的(public),保護的(protective),也可是私有的(private),它們可以象任何c++成員函式一樣被呼叫,可以傳遞任何型別的引數。
不同在於乙個槽函式能和乙個訊號相連線,
只要訊號發出了,這個槽函式就會自動被呼叫。
connect函式語法如下:
connect(sender, signal(signal), receiver, slot(slot));
sender和receiver是qobject物件指標,signal和slot是不帶引數的函式原型。
signale()和slot()巨集的作用是把他們轉換成字串。
在目前有的例子中,我們已經連線了不同的訊號和槽。
實際使用中還要考慮如下一些規則:
1、乙個訊號可以連線到多個槽:
connect(slider, signal(valuechanged(int)),spinbox, slot(setvalue(int)));
connect(slider, signal(valuechanged(int)),this, slot(updatestatusbarindicator(int)));
當訊號發出後,槽函式都會被呼叫,但是呼叫的順序是隨機的,不確定的。
2、多個訊號可以連線到乙個槽
connect(lcd, signal(overflow()), this, slot(handlematherror()));
connect(calculator, signal(divisionbyzero()),this, slot(handlematherror()));
任何乙個訊號發出,槽函式都會執行。
3、乙個訊號可以和另乙個訊號相連
connect(lineedit, signal(textchanged(const qstring &)), this,
signal(updaterecord(const qstring &)));
第乙個訊號發出後,第二個訊號也同時傳送。
除此之外,訊號與訊號連線上和訊號和槽連線相同。
4、連線可以被刪除
disconnect(lcd, signal(overflow()),this, slot(handlematherror()));
這個函式很少使用,乙個物件刪除後,qt自動刪除這個物件的所有連線。
訊號和槽函式必須有著相同的引數型別,這樣訊號和槽函式才能成功連線:
connect(ftp, signal(rawcommandreply(int, const qstring &)),this,
slot(processreply(int, const qstring &)));
如果訊號裡的引數個數多於槽函式的引數,多餘的引數被忽略:
connect(ftp, signal(rawcommandreply(int, const qstring &)),this, slot(checkerrorcode(int)));
如果參速型別不匹配,或者訊號和槽不存在,在debug狀態時,qt會在執行期間給出警告。
如果訊號和槽連線時包含了引數的名字,qt將會給出警告。
2.3快速設計對話方塊int main(int argc, char *argv)
2.4改變形狀的對話方塊
最常見的改變形狀的對話方塊有兩種:擴充套件對話方塊和多頁對話方塊.
2.5動態對話方塊
動態對話方塊就是在程式執行時使用的從qt設計師的.ui檔案建立而來的那些對話方塊.
動態對話方塊不需要通過uic把.ui檔案轉換成c++**.
2.6內建的視窗部件類和對話方塊類
這個就有好多了.
Qt學習之路 4 建立對話方塊
void mainwindow open void mainwindow open 不過,這樣做有乙個問題 如果我們的對話方塊不是在乙個介面類中出現呢?由於qwidget的 parent 必須是qwidget指標,那就限制了我們不能將乙個普通的 c 類指標傳給 qt 對話方塊。另外,如果對記憶體占用...
Qt學習之二 建立對話方塊
1 深入介紹訊號和槽 槽和普通的 c 成員函式幾乎是一樣的 可以是虛函式,可以被過載 可以是公有的 保護的或者私有的。槽還可以和訊號連線在一起,在這種情況下,每當發射這個訊號的時候,就會自動呼叫這個槽。connect sender,signal signal receiver,slot slot 這...
Qt 對話方塊
1.qt 中使用qdialog 類實現對話方塊。就像主視窗一樣,我們通常會設計乙個類繼承 qdialog qdialog 及其子類,以及所有 qt dialog 型別的類 的對於其 parent 指標都有額外的解釋 如果 parent 為null 則該對話方塊會作為乙個頂層視窗,否則則作為其父元件的...