**:
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 函式...