在Qt開發中偶爾遇到子窗口全屏顯示和退出全屏的功能需求,是一種比較正常的情況,首先,我們需要知道子窗口全屏顯示與退出全屏主要會調用的方法有哪些,下面將列舉此過程主要調用的方法:
isFullScreen();判斷窗口當前是處於全屏狀態還是非全屏狀態
setWindowFlags(Qt::WindowFlags type);設置窗口屬性
showFullScreen();設置窗口全屏顯示
showNormal();設置窗口恢復原來顯示(Restores the widget after it has been maximized or minimized.)

下面對Qt::WindowFlags類型做一個大致的介紹:
enum Qt::windowType
flags Qt::WindowFlags
此枚舉類型用於為窗口小部件指定各種窗口系統屬性。它們相當不尋常,但在少數情況下是必要的。 其中一些標志取決於底層窗口管理器是否支持它們。主要類型有:
Qt::Widget:這是QWidget的默認類型。如果它們有父級,這種類型的部件是子部件,如果沒有父控件,則為獨立窗口。
Qt::Window:表示小部件是一個窗口,無論窗口小部件是否具有父控件,通常具有窗口系統框架和標題欄。 請注意,如果部件沒有父控件,則無法取消設置此標記(即如果存在父控件,則可以取消此標記,否則,必須存在此標記用以標識此控件是個獨立窗口)。
Qt::Dialog:指示部件是應該作為對話框窗口(即標題欄中通常沒有最大化或最小化按鈕)。這是QDialog的默認類型。如果要將其用作模態對話框,則應從另一個窗口啟動它,或者如果有父窗口,則與QWidget::windowModality屬性一起使用。如果將其設置為模態,則對話框將阻止應用程序中的其他頂級窗口獲取任何輸入。我們將具有父級的頂級窗口稱為輔助窗口。
Qt::Sheet:表示該窗口是Macintosh工作表。 由於使用工作表意味着窗口模態,推薦的方法是使用QWidget :: setWindowModality()或QDialog :: open()。
Qt::Drawer:表示該窗口小部件是Macintosh抽屜。
Qt::Popup:表示窗口小部件是彈出式頂級窗口,即它是模態的,但具有適合彈出菜單的窗口系統框架。
Qt::Tool:表示窗口小部件是工具窗口。工具窗口通常是一個小窗口,其標題欄和裝飾比通常小,通常用於工具按鈕的集合。 如果有父部件,則工具窗口將始終保持在其上。 如果沒有父部件,您可以考慮使用Qt :: WindowStaysOnTopHint使其位於最頂端。 如果窗口系統支持它,工具窗口可以用更輕的框架裝飾。它也可以與Qt :: FramelessWindowHint結合使用。 在macOS上,工具窗口對應浮動類窗口。 這意味着窗口存在於正常窗口之上; 不可能在它上面放一個普通的窗口。 默認情況下,當應用程序處於非活動狀態時,工具窗口將消失。 這可以通過Qt :: WA_MacAlwaysShowToolWindow屬性來控制。
Qt::ToolTip:表示窗口小部件是工具提示。 這在內部用於實現工具提示,沒有標題欄和窗口邊框。
Qt::SplashScreen:表示該窗口是閃屏。 這是QSplashScreen的默認類型。
Qt::Desktop:表示此小組件是桌面。 這是QDesktopWidget的類型。
Qt::SubWindow:表示此窗口小部件是子窗口,例如QMdiSubWindow窗口小部件。
Qt::ForeignWindow:指示此窗口對象是表示由另一個進程創建的本機平台窗口或手動使用本機代碼的句柄。
Qt::CoverWindow:表示該窗口代表一個封面窗口,例如,當應用程序在BlackBerry平台上最小化時顯示。
還有許多標志可用於自定義頂級窗口的外觀,感興趣的朋友可以自己對照API看。也可以直接看下面關於Qt::WindowFlags的API截圖。




如果需要demo的朋友,可以掃描下面二維碼,關注微信公眾號,在微信公眾號里面的菜單欄,點擊作者,添加好友,私聊作者。
