1. 程式人生 > >QT之對話框

QT之對話框

QT 對話框

我們在平時的軟件設計中,難免會遇到對話框,那麽我們今天就來看看 Qt 中的對話框。

對話框是與用戶進行簡短交互的頂層窗口,QDialog 是 Qt 中所有對話框窗口的基類。QDialog 繼承於 QWidget 是一種容器類型的組件。關系入下圖所示:
技術分享圖片
QDialog 的意義:1、QDialog 作為一種專用的交互窗口而存在;2、QDialog 不能作為子部件嵌入其它容器中;3、QDialog 是定制了窗口式樣的特殊的 QWidget。
我們做如下實驗:
技術分享圖片
那麽這塊就涉及到兩個概念了:模態對話框和非模態對話框。我們下來就分別介紹下這兩個對話框的特點。
模態對話框(QDialog::exec()):顯示後無法與父窗口進行交互,是一種阻塞式的對話框調用方式。

非模態對話框(QDialog::show()):顯示後獨立存在可以同時與父窗口進行交互,是一種非阻塞式的對話框調用方式。
那麽在一般情況下:模態對話框用於必須依賴用戶選擇的場合,如消息提示、文件選擇、打印設置等;非模態對話框用於特殊功能設置的場合,如查找操作、屬性設置等。
那麽我們在棧上創建模態對話框是最簡單常用的方式,在一般情況下非模態對話框需要在堆上創建,通過 QDialog::setModal 函數可以創建混合特性的對話框,非模態對話框需要指定 Qt::QA_DeleteOnClose 屬性。
我們下面就做個試驗,建立3個按鈕,按下每個按鈕則打印出 begin 和 end 。如下所示:
頭文件:
技術分享圖片
源文件,每個按鈕對應打印 begin 和 end。如下:
技術分享圖片
那麽我們運行得到如下所示,每按下一個按鈕,就會對應打印出相應信息:
技術分享圖片
那麽只有模態對話框才有返回值的概念,模態對話框的返回值用於表示交互結果。QDialog::exec() 的返回值為交互結果:1、void QDialog::done(int i) 關閉對話框並將參數作為交互結果;2、QDialog::Accepted - 用戶操作成功;3、QDialog::Rejected - 用戶操作失敗。
我們分別在三個函數裏做如下設置,ModalBtn_Clicked返回Accepted;NormalBtn_Clicked返回Rejected;MixedBtn_Clicked返回100,如下所示:
技術分享圖片
主程序如下所示:
技術分享圖片
結果分別如下:
技術分享圖片技術分享圖片技術分享圖片
那麽今天我們就學習了對話框相關的知識,分為模態對話框和非模態對話框;模態對話框是阻塞式的,用於依賴用戶交互結果的場合;非模態對話框是非阻塞式的,用於功能設置的場合。

    以上內容來自狄泰軟件學院的QT教程,歡迎大家一起來學習,可以加我QQ:243343083,一起學習。狄泰技術交流群:199546072 

QT之對話框