QWidget QMainWindow QDialog 之間的區(qū)別

QWidget QMainWindow QDialog 之間的區(qū)別

QWidget 類是所有用戶界面對象的基類。 窗口部件是用戶界面的一個原子:它從窗口系統(tǒng)接收鼠標、鍵盤和其它事件,并且在屏幕上繪制自己的表現(xiàn)。每一個窗口部件都是矩形,并且它們按Z軸順序排列的。一個窗口部件可以被它的父窗口部件或者它前面的窗口部件蓋住一部分。

QMainWindow 類提供一個有菜單條、錨接窗口(例如工具條)和一個狀態(tài)條的主應用程序窗口。主窗口通常用在提供一個大的中央窗口部件(例如文本編輯或者繪制畫布)以及周圍菜單、工具條和一個狀態(tài)條。QMainWindow常常被繼承,因為這使得封裝中央部件、菜單和工具條以及窗口狀態(tài)變得更容易。繼承使創(chuàng)建當用戶點擊菜單項或者工具條按鈕時被調(diào)用的槽成為可能。你也可以使用Qt設計器來創(chuàng)建主窗口。

QDialog 類是對話框窗口的基類。對話框窗口是主要用于短期任務以及和用戶進行簡要通訊的頂級窗口。QDialog可以是模式的也可以是非模式的。QDialog支持擴展性并且可以提供返回值。它們可以有默認按鈕。QDialog也可以有一個QSizeGrip在它的右下角,使用setSizeGripEnabled()。

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

如果是頂級對話框,那就基于 QDialog 創(chuàng)建,如果是主窗體,那就基于 QMainWindow,如果不確定,或者有可能作為頂級窗體,或有可能嵌入到其他窗體中,則基于 QWidget 創(chuàng)建。

當然了,實際中,你還可以基于任何其他部件類來派生??磳嶋H需求了,比如 QFrame、QStackedWidget 等等。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容