1. 程式人生 > >QT 對話方塊QDialog

QT 對話方塊QDialog

PS: 
1.關閉主視窗並退出程式是 QApplication::exit() 
2.如果是QDialog,就accept() 或 reject() 
3.對於所有QWidget:close()

PPS: 
show()與exec()區別: 
show(): 
顯示一個非模式對話方塊。控制權即刻返回給呼叫函式。 
彈出視窗是否模式對話方塊,取決於modal屬性的值。

exec(): 
顯示一個模式對話方塊,並且鎖住程式直到使用者關閉該對話方塊為止。函式返回一個DialogCode結果。 
在對話方塊彈出期間,使用者不可以切換同程式下的其它視窗,直到該對話方塊被關閉。

先簡單說一下我對模式和非模式對話方塊的一點點理解: 
模式對話方塊,就是在彈出視窗的時候,整個程式就被鎖定了,處於等待狀態,直到對話方塊被關閉。這時往往是需要對話方塊的返回值進行下面的操作。如:確認視窗(選擇“是”或“否”)。 
非模式對話方塊,在呼叫彈出視窗之後,呼叫即刻返回,繼續下面的操作。這裡只是一個呼叫指令的發出,不等待也不做任何處理。如:查詢框。

如果要固定對話方塊的大小可以用兩種方法:

一種方法是設定它的最大大小和最小大小,並且使它們的值相等,都等於當前你設定的視窗尺寸。 
簡單的示例:

setMinimumSize(370, 150); 
setMaximumSize(370, 150); 

其他如height和width一般可以不理會。

另一種方法是使用setFixedSize(),這樣一句話就可以解決問題。 
簡單的示例:

setFixedSize(365,240); 

一個實際的例子:

//這樣設定的結果,連對話方塊的最大最小按鈕都沒有了
 this->setFixedSize( this->width (),this->height ());