此帖主要記錄平常工程里遇到的qt樣式
窗口無邊框
原始文檔
void QWidget::setWindowFlag(Qt::WindowType flag, bool on = true)
Sets the window flag flag on this widget if on is true; otherwise clears the flag.
This function was introduced in Qt 5.9.
See also setWindowFlags(), windowFlags(), and windowType().
QWidget::setWindowFlag(Qt::WindowType flag, bool on = true) 是 Qt 5.9 引入的一個便捷函數,用于動態設置或清除單個窗口標志(Window Flag)。以下是對該函數的詳細說明:
setWindowFlags() 會直接覆蓋所有標志。
setWindowFlag() 僅修改指定標志,保留其他標志不變。
關鍵枚舉值(Qt::WindowType 部分)
標志 | 作用 |
---|---|
FramelessWindowHint | 無邊框窗口 |
WindowStaysOnTopHint | 窗口置頂 |
WindowMinimizeButtonHint | 顯示最小化按鈕 |
WindowMaximizeButtonHint | 顯示最大化按鈕 |
WindowCloseButtonHint | 顯示關閉按鈕 |
優勢:比 setWindowFlags() 更安全、更易用(避免覆蓋其他標志)。
適用場景:需要動態修改單個窗口屬性時。
Qt::WindowType 枚舉
標志類型:Qt::WindowFlags
此枚舉類型用于指定小部件的各種窗口系統屬性。這些屬性較為特殊,但在某些情況下是必需的。部分標志的效果取決于底層窗口管理器是否支持。
主要窗口類型
常量 | 值 | 描述 |
---|---|---|
Qt::Widget | 0x00000000 | QWidget 的默認類型。有父部件時為子部件,無父部件時為獨立窗口。參見 Qt::Window 和 Qt::SubWindow 。 |
Qt::Window | 0x00000001 | 表示該小部件是一個窗口(通常帶窗口系統邊框和標題欄),無論是否有父部件。注意:如果小部件無父部件,則無法取消此標志。 |
Qt::Dialog | 0x00000002 | Window | 表示窗口應裝飾為對話框(通常標題欄無最大化/最小化按鈕)。QDialog 的默認類型。若需模態對話框,應從其他窗口啟動或設置父部件并啟用 QWidget::windowModality 。 |
Qt::Sheet | 0x00000004 | Window | (macOS 專用)表示窗口為表單(Sheet)。因表單隱含模態性,建議改用 QWidget::setWindowModality() 或 QDialog::open() 。 |
Qt::Drawer | Sheet | Dialog | (macOS 專用)表示小部件為抽屜(Drawer)。 |
Qt::Popup | 0x00000008 | Window | 表示窗口為彈出式頂層窗口(模態,但具有適合彈出菜單的窗口系統邊框)。 |
Qt::Tool | Popup | Dialog | 表示窗口為工具窗口(通常標題欄較小,適合工具按鈕集合)。若有父窗口,工具窗口將始終置于其上方;若無父窗口,可結合 Qt::WindowStaysOnTopHint 。 |
Qt::ToolTip | Popup | Sheet | 表示小部件為工具提示(內部用于實現工具提示)。 |
Qt::SplashScreen | ToolTip | Dialog | 表示窗口為啟動畫面(QSplashScreen 的默認類型)。 |
Qt::Desktop | 0x00000010 | Window | 表示小部件為桌面(QDesktopWidget 的類型)。 |
Qt::SubWindow | 0x00000012 | 表示小部件為子窗口(如 QMdiSubWindow)。 |
Qt::ForeignWindow | 0x00000020 | Window | 表示該窗口對象是代表由其他進程或原生代碼創建的本地平臺窗口句柄。 |
Qt::CoverWindow | 0x00000040 | Window | 表示窗口為封面窗口(某些平臺應用最小化時顯示)。 |
窗口外觀定制標志
(僅對頂層窗口有效)
常量 | 值 | 描述 |
---|---|---|
Qt::MSWindowsFixedSizeDialogHint | 0x00000100 | (Windows 專用)為窗口添加細邊框(傳統用于固定大小對話框)。 |
Qt::MSWindowsOwnDC | 0x00000200 | (Windows 專用)為窗口分配獨立的顯示上下文。 |
Qt::BypassWindowManagerHint | 0x00000400 | 禁用所有窗口管理器協議(行為因操作系統和窗口管理器而異)。 |
Qt::X11BypassWindowManagerHint | BypassWindowManagerHint | (X11 專用)完全繞過窗口管理器,生成無邊框且不受管理的窗口(需手動調用 QWidget::activateWindow() 獲取鍵盤輸入)。 |
Qt::FramelessWindowHint | 0x00000800 | 無邊框窗口(用戶無法通過窗口系統移動或調整大小,X11 效果取決于窗口管理器)。 |
Qt::NoDropShadowWindowHint | 0x40000000 | 在支持的平臺上禁用窗口陰影。 |
窗口控件自定義標志
(需先設置 Qt::CustomizeWindowHint
才能修改以下標志)
常量 | 值 | 描述 |
---|---|---|
Qt::CustomizeWindowHint | 0x02000000 | 關閉默認窗口標題欄提示(允許自定義其他控件標志)。 |
Qt::WindowTitleHint | 0x00001000 | 顯示標題欄。 |
Qt::WindowSystemMenuHint | 0x00002000 | 添加窗口系統菜單(可能含關閉按鈕,macOS 需配合 WindowCloseButtonHint )。 |
Qt::WindowMinimizeButtonHint | 0x00004000 | 添加最小化按鈕(某些平臺需同時啟用 WindowSystemMenuHint )。 |
Qt::WindowMaximizeButtonHint | 0x00008000 | 添加最大化按鈕(某些平臺需同時啟用 WindowSystemMenuHint )。 |
Qt::WindowMinMaxButtonsHint | WindowMinimizeButtonHint | WindowMaximizeButtonHint | 同時添加最小化和最大化按鈕。 |
Qt::WindowCloseButtonHint | 0x08000000 | 添加關閉按鈕(某些平臺需同時啟用 WindowSystemMenuHint )。 |
Qt::WindowContextHelpButtonHint | 0x00010000 | 在對話框中添加上下文幫助按鈕。 |
Qt::MacWindowToolBarButtonHint | 0x10000000 | (macOS 專用)在窗口右上角添加工具欄按鈕。 |
Qt::WindowFullscreenButtonHint | 0x80000000 | (macOS 專用)添加全屏按鈕。 |
Qt::BypassGraphicsProxyWidget | 0x20000000 | 防止窗口及其子部件自動嵌入到 QGraphicsProxyWidget 中。 |
Qt::WindowShadeButtonHint | 0x00020000 | (部分窗口管理器支持)用卷起按鈕替代最小化按鈕。 |
其他行為控制標志
常量 | 值 | 描述 |
---|---|---|
Qt::WindowStaysOnTopHint | 0x00040000 | 窗口置頂(X11 需配合 Qt::X11BypassWindowManagerHint )。 |
Qt::WindowStaysOnBottomHint | 0x04000000 | 窗口置底(X11 需窗口管理器支持 _NET_WM_STATE_BELOW ,macOS 未實現)。 |
Qt::WindowTransparentForInput | 0x00080000 | 窗口僅用于顯示,不接收輸入事件(事件會穿透)。 |
Qt::WindowOverridesSystemGestures | 0x00100000 | 禁用系統級手勢(如三指切換桌面),由窗口自行處理手勢。 |
Qt::WindowDoesNotAcceptFocus | 0x00200000 | 窗口不接受輸入焦點。 |
Qt::MaximizeUsingFullscreenGeometryHint | 0x00400000 | 最大化時使用包括系統 UI 區域(如狀態欄)的完整屏幕幾何。 |
其他說明
- Qt::WindowType_Mask (
0x000000ff
):用于提取窗口類型標志的掩碼。 - WindowFlags 是
QFlags<WindowType>
的別名,存儲窗口標志的組合。 - 參見:
QWidget::windowFlags
和 Window Flags 示例。
? 2019 The Qt Company Ltd. 文檔貢獻者保留其版權。
本文檔按 GNU 自由文檔許可證 1.3 版 授權。
Qt 及相關標識是 The Qt Company Ltd. 在芬蘭和其他國家的商標。其他商標歸其所有者所有。