QT遇到过的样式记录

发布于:2025-07-13 ⋅ 阅读:(12) ⋅ 点赞:(0)

此帖主要记录平常工程里遇到的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::WindowQt::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):用于提取窗口类型标志的掩码。
  • WindowFlagsQFlags<WindowType> 的别名,存储窗口标志的组合。
  • 参见:QWidget::windowFlagsWindow Flags 示例

© 2019 The Qt Company Ltd. 文档贡献者保留其版权。
本文档按 GNU 自由文档许可证 1.3 版 授权。
Qt 及相关标识是 The Qt Company Ltd. 在芬兰和其他国家的商标。其他商标归其所有者所有。


网站公告

今日签到

点亮在社区的每一天
去签到