溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

QT之對話框(十四)

發(fā)布時間:2020-08-05 18:36:07 來源:網(wǎng)絡(luò) 閱讀:1487 作者:上帝之子521 欄目:開發(fā)技術(shù)
    我們在平時的軟件設(shè)計中,難免會遇到對話框,那么我們今天就來看看 Qt 中的對話框。

對話框是與用戶進行簡短交互的頂層窗口,QDialog 是 Qt 中所有對話框窗口的基類。QDialog 繼承于 QWidget 是一種容器類型的組件。關(guān)系入下圖所示:
QT之對話框(十四)
QDialog 的意義:1、QDialog 作為一種專用的交互窗口而存在;2、QDialog 不能作為子部件嵌入其它容器中;3、QDialog 是定制了窗口式樣的特殊的 QWidget。
我們做如下實驗:
QT之對話框(十四)
那么這塊就涉及到兩個概念了:模態(tài)對話框和非模態(tài)對話框。我們下來就分別介紹下這兩個對話框的特點。
模態(tài)對話框(QDialog::exec()):顯示后無法與父窗口進行交互,是一種阻塞式的對話框調(diào)用方式。
非模態(tài)對話框(QDialog::show()):顯示后獨立存在可以同時與父窗口進行交互,是一種非阻塞式的對話框調(diào)用方式。
那么在一般情況下:模態(tài)對話框用于必須依賴用戶選擇的場合,如消息提示、文件選擇、打印設(shè)置等;非模態(tài)對話框用于特殊功能設(shè)置的場合,如查找操作、屬性設(shè)置等。
那么我們在棧上創(chuàng)建模態(tài)對話框是最簡單常用的方式,在一般情況下非模態(tài)對話框需要在堆上創(chuàng)建,通過 QDialog::setModal 函數(shù)可以創(chuàng)建混合特性的對話框,非模態(tài)對話框需要指定 Qt::QA_DeleteOnClose 屬性。
我們下面就做個試驗,建立3個按鈕,按下每個按鈕則打印出 begin 和 end 。如下所示:
頭文件:
QT之對話框(十四)
源文件,每個按鈕對應(yīng)打印 begin 和 end。如下:
QT之對話框(十四)
那么我們運行得到如下所示,每按下一個按鈕,就會對應(yīng)打印出相應(yīng)信息:
QT之對話框(十四)
那么只有模態(tài)對話框才有返回值的概念,模態(tài)對話框的返回值用于表示交互結(jié)果。QDialog::exec() 的返回值為交互結(jié)果:1、void QDialog::done(int i) 關(guān)閉對話框并將參數(shù)作為交互結(jié)果;2、QDialog::Accepted - 用戶操作成功;3、QDialog::Rejected - 用戶操作失敗。
我們分別在三個函數(shù)里做如下設(shè)置,ModalBtn_Clicked返回Accepted;NormalBtn_Clicked返回Rejected;MixedBtn_Clicked返回100,如下所示:
QT之對話框(十四)
主程序如下所示:
QT之對話框(十四)
結(jié)果分別如下:
QT之對話框(十四)QT之對話框(十四)QT之對話框(十四)
那么今天我們就學(xué)習(xí)了對話框相關(guān)的知識,分為模態(tài)對話框和非模態(tài)對話框;模態(tài)對話框是阻塞式的,用于依賴用戶交互結(jié)果的場合;非模態(tài)對話框是非阻塞式的,用于功能設(shè)置的場合。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI