Qt學習 建立對話方塊

2021-05-24 09:42:54 字數 2083 閱讀 2501

第二章 建立對話方塊 總結筆記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 則該對話方塊會作為乙個頂層視窗,否則則作為其父元件的...