在使用Qt設計的時候經常會看到QWidget控件的構造函數出現下面這樣一句話:
QWidget(QWidget *parent=0,Qt::WindowFlags f=0)
QWidget *parent=0
這段代碼容易理解,是指父窗口部件的指定。 Qt::WindowFlags f=0
這代碼就有一些讓人不解了,其實它是指定控件的窗口標識的。值為0即Qt::Widget。
那么就要好好說說控件的窗口標識的設置了。窗口標識由兩部分組成分別是窗口類型和窗口提示hint,一個窗口只有一個窗口類型。窗口提示定義了窗口的外觀,可以有多個提示,窗口提示進行按位取或即可。
要說清楚Qt::WindowFlags枚舉類型就必須清楚兩個概念:窗口和部件(這樣划分便於區分)
窗口:相對獨立的,有子窗口和父窗口之分,主要特點就是窗口有完整的邊框。
部件:必須依賴於父窗口而存在,依賴性較強,出現在父窗體的界面內部。
有了上述的概念就好解釋Qt::WindowFlags枚舉類型的用法了。首先判斷一個控件是否是窗體先根據參數parent的指定,要是值為0那么就可以判斷其是一個窗口。否則需要根據Qt::WindowFlags枚舉類型的值才可以判斷其是否為窗口還是部件。
在Qt Assistant里面搜索Qt::WindowFlags就會出現其詳細的解釋。這邊摘下其中部分內容:
Qt::Widget //是一個窗口或部件,有父窗口就是部件,沒有就是窗口 Qt::Window //是一個窗口,有窗口邊框和標題 Qt::Dialog //是一個對話框窗口 Qt::Sheet //是一個窗口或部件Macintosh表單 Qt::Drawer //是一個窗口或部件Macintosh抽屜 Qt::Popup //是一個彈出式頂層窗口 Qt::Tool //是一個工具窗口 Qt::ToolTip //是一個提示窗口,沒有標題欄和窗口邊框 Qt::SplashScreen //是一個歡迎窗口,是QSplashScreen構造函數的默認值 Qt::Desktop //是一個桌面窗口或部件 Qt::SubWindow //是一個子窗口 //為窗口添加一些功能 Qt::CustomizeWindowHint //關閉默認窗口標題提示 Qt::WindowTitleHint //為窗口修飾一個標題欄 Qt::WindowSystemMenuHint //為窗口修飾一個窗口菜單系統 Qt::WindowMinimizeButtonHint //為窗口添加最小化按鈕 Qt::WindowMaximizeButtonHint //為窗口添加最大化按鈕 Qt::WindowMinMaxButtonsHint //為窗口添加最大化和最小化按鈕 Qt::WindowCloseButtonHint Qt::WindowContextHelpButtonHint Qt::MacWindowToolBarButtonHint Qt::WindowFullscreenButtonHint Qt::BypassGraphicsProxyWidget Qt::WindowShadeButtonHint Qt::WindowStaysOnTopHint Qt::WindowStaysOnBottomHint Qt::WindowOkButtonHint Qt::WindowCancelButtonHint Qt::WindowTransparentForInput
至此,就介紹完了Qt::WindowFlags枚舉類型了,掌握這些會使以后的界面設計更加游刃有余。
https://blog.csdn.net/u012521552/article/details/51941396