Qt 對話方塊

2021-06-20 05:49:44 字數 1343 閱讀 1111

**:

1.qt

中使用qdialog

類實現對話方塊。就像主視窗一樣,我們通常會設計乙個類繼承

qdialog

。qdialog

(及其子類,以及所有

qt::dialog

型別的類)的對於其

parent

指標都有額外的解釋:如果

parent

為null

,則該對話方塊會作為乙個頂層視窗,否則則作為其父元件的子對話方塊(此時,其預設出現的位置是

parent

的中心)。

頂層視窗與非頂層視窗的區別在於,頂層視窗在工作列會有自己的位置,而非頂層視窗則會共享其父元件的位置。

2.對話方塊分為模態對話方塊和非模態對話方塊

所謂模態對話方塊,就是會阻塞同一應用程式中其它視窗的輸入。模態對話方塊很常見,比如

「開啟檔案

」功能。你可以嘗試一下記事本的開啟檔案,當開啟檔案對話方塊出現時,我們是不能對除此對話方塊之外的視窗部分進行操作的。

與此相反的

非模態對話方塊,例如查詢對話方塊,我們可以在顯示著查詢對話方塊的同時,繼續對記事本的內容進行編輯

。qt

支援模態對話方塊和非模態對話方塊。其中

qt

有兩種級別的模態對話方塊:應用程式級別的模態和視窗級別的模態,預設是應用程式級別的模態。

應用程式級別的模態是指,當該種模態的對話方塊出現時,使用者必須首先對對話方塊進行互動,直到關閉對話方塊,然後才能訪問程式中其他的視窗。

視窗級別的模態是指,該模態僅僅阻塞與對話方塊關聯的視窗,但是依然允許使用者與程式中其它窗**互。視窗級別的模態尤其適用於多視窗模式,更詳細的討論可以看

以前發表過的文章。

① 使用 qdialog::exec() 實現應用程式級別的模態對話方塊,

②使用 qdialog::open() 實現視窗級別的模態對話方塊,

③使用 qdialog::show() 實現非模態對話方塊。

exec()

函式的真正含義是開啟乙個新的事件迴圈.

所謂事件迴圈,可以理解成乙個無限迴圈。

qt 在開啟了事件迴圈之後,系統發出的各種事件才能夠被程式監聽到

。這個事件迴圈相當於一種輪詢的作用。既然是無限迴圈,當然在開啟了事件迴圈的地方,**就會被阻塞,後面的語句也就不會被執行到,只有在對話方塊關閉,exec()函式返回之後再能繼續事件迴圈後的**。因此,對於使用了

exec()

顯示的模態對話方塊

引用自:qt學習之路2

Qt 對話方塊

1.qdialog 類是對話方塊視窗的基類。對話方塊視窗是乙個頂級視窗,通常用作短期任務,或 者是與使用者的簡短會話等場合。2.對話方塊可以分為模態對話方塊和非模態對話方塊。所謂模態對話方塊就是在其沒有被關閉之前,使用者不能與同乙個應用程式的其他視窗進行互動,直到該對話方塊關閉。奪取焦點 對於非模態...

qt 對話方塊

對話方塊分為模態和非模態 1 模態對話方塊就是在其沒有被關閉之前,使用者不能與同乙個應用程式的其他視窗進行互動,直到該對話方塊關閉。this setmodal true 2 非模態對話方塊,當被開啟時,使用者既可選擇和該對話方塊進行互動,也可以選擇同應用程式的其他窗 互。this setmodal ...

Qt之標準對話方塊 顏色對話方塊

1 在標頭檔案中包含 include qcolordialog void widget on colorbutton clicked 這裡使用了qcolordialog的靜態函式getcolor 來獲取顏色,它的三個引數的作用分別是 設定初始顏色 指定父視窗和設定對話方塊標題。getcolor 函式...