QWidget/QMainWindow/QDialog的異同點

QWidget繼承於QObject和QPaintDevice,QDialog和QMainWindow則繼承於QWidget,QDialog、QMainWindow兩者之間沒有直接關係


QWidget

QWidget類是所有用戶界面對象的基類。

窗口部件是用戶界面的一個原子:它從窗口系統接收鼠標、鍵盤和其它事件,並且將自己的表現形式繪製在屏幕上。每一個窗口部件都是矩形,並且它們按Z軸順序排列。一個窗口部件可以被它的父窗口部件或者它前面的窗口部件蓋住一部分。


QMainWindow

QMainWindow類提供一個有菜單條、工具欄、狀態條的主應用程序窗口。

一個主窗口提供了構建應用程序的用戶界面框架。Qt擁有QMainWindow及其相關類來管理主窗口。

QMainWindow擁有自己的佈局,我們可以使用QMenuBar(菜單欄)、QToolBar(工具欄)、QStatusBar(狀態欄)以及QDockWidget(懸浮窗體),佈局有一個可由任何種類小窗口所佔據的中心區域。


QDialog

QDialog類是對話框窗口的基類。

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

注意:QDialog(以及其它使用Qt::Dialog類型的widget)使用父窗口部件的方法和Qt中其它類稍微不同。對話框總是頂級窗口部件,但是如果它有一個父對象,它的默認位置就是父對象的中間。它也將和父對象共享工具條條目。


使用建議

  • 如果需要嵌入到其他窗體中,則基於QWidget創建。
  • 如果是頂級對話框,則基於QDialog創建。
  • 如果是主窗體,則基於QMainWindow創建。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章