1. 程式人生 > >[轉]QWidget QMainWindow QDialog的區別和相互轉換

[轉]QWidget QMainWindow QDialog的區別和相互轉換

QWidget類是所有使用者介面物件的基類。 視窗部件是使用者介面的一個原子:它從視窗系統接收滑鼠、鍵盤和其它事件,並且在螢幕上繪製自己的表現。每一個視窗部件都是矩形,並且它們按Z軸順序排列的。一個視窗部件可以被它的父視窗部件或者它前面的視窗部件蓋住一部分。


QMainWindow 類提供一個有選單條、錨接視窗(例如工具條)和一個狀態條的主應用程式視窗。主視窗通常用在提供一個大的中央視窗部件(例如文字編輯或者繪製畫布)以及周 圍選單、工具條和一個狀態條。QMainWindow常常被繼承,因為這使得封裝中央部件、選單和工具條以及視窗狀態變得更容易。繼承使建立當用戶點選菜 單項或者工具條按鈕時被呼叫的槽成為可能。你也可以使用Qt設計器來建立主視窗。

QDialog類是對話方塊視窗的基類。對話方塊視窗是主要 用於短期任務以及和使用者進行簡要通訊的頂級視窗。QDialog可以是模式的也可以是非模式的。QDialog支援擴充套件性並且可以提供返回值。它們可以有 預設按鈕。QDialog也可以有一個QSizeGrip在它的右下角,使用setSizeGripEnabled()。

QDialog 是最普通的頂級視窗。不被嵌入到一個父視窗部件的視窗部件被叫做頂級視窗部件。通常情況下,頂級視窗部件是有框架和標題欄的視窗(儘管如果使用了一定的窗 口部件標記,建立頂級視窗部件時也可能沒有這些裝飾。)在Qt中,QMainWindow和和不同的QDialog的子類是最普通的頂級視窗。

如果是頂級對話方塊,那就基於QDialog建立,如果是主窗體,那就基於QMainWindow,如果不確定,或者有可能作為頂級窗體,或有可能嵌入到其他窗體中,則基於QWidget建立。
當然了,實際中,你還可以基於任何其他部件類來派生。看實際需求了,比如QFrame、QStackedWidget等等。
注:摘自
http://www.kuqin.com/qtdocument/qwidget.html#details

http://www.kuqin.com/qtdocument/qmainwindow.html#details
http://www.kuqin.com/qtdocument/qdialog.html