此帖主要记录平常工程里遇到的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. 在芬兰和其他国家的商标。其他商标归其所有者所有。