当前位置: 首页 > news >正文

深入理解Qt的SetWindowsFlags函数

深入理解Qt的SetWindowsFlags函数

​ 我们接下来来仔细了解一下Qt当中一个非常重要的函数:SetWindowsFlags。

void QWidget::setWindowFlags(Qt::WindowFlags flags)

setWindowFlags()用于设置窗口的系统标志,这些标志决定了窗口如何与窗口管理器交互以及它的外观表现。我们重点主要了解的是Qt::WindowFlags

  • 窗口类型(type):一个窗口只能有一种类型,如 Qt::Window, Qt::Dialog 等。
  • 提示标志(hints):可以添加多个提示,如 Qt::FramelessWindowHint, Qt::WindowStaysOnTopHint 等,用来控制窗口的显示方式和行为。
  • 更改后需重新显示:调用后原窗口将被隐藏,修改后的 flags 会在下一次 show() 时生效。

​ 这是上面这个函数一些比较重要的点。

我已为您生成完整的 enum WindowType 中文教学文档,涵盖每个枚举值的含义与用途。您可以在右侧的文档视图中阅读与编辑该文档,如需导出 PDF、添加示例代码或生成表格版对比内容,也可以继续告诉我!

WindowType 枚举详解📘

用于在 Qt 中通过 QWidget::setWindowFlags()QWindow::setFlags() 设置窗口类型和行为。

    enum WindowType {Widget = 0x00000000,Window = 0x00000001,Dialog = 0x00000002 | Window,Sheet = 0x00000004 | Window,Drawer = Sheet | Dialog,Popup = 0x00000008 | Window,Tool = Popup | Dialog,ToolTip = Popup | Sheet,SplashScreen = ToolTip | Dialog,Desktop = 0x00000010 | Window,SubWindow = 0x00000012, // Note QTBUG-115729 before usingForeignWindow = 0x00000020 | Window,CoverWindow = 0x00000040 | Window,WindowType_Mask = 0x000000ff,MSWindowsFixedSizeDialogHint = 0x00000100,MSWindowsOwnDC = 0x00000200,BypassWindowManagerHint = 0x00000400,X11BypassWindowManagerHint = BypassWindowManagerHint,FramelessWindowHint = 0x00000800,WindowTitleHint = 0x00001000,WindowSystemMenuHint = 0x00002000,WindowMinimizeButtonHint = 0x00004000,WindowMaximizeButtonHint = 0x00008000,WindowMinMaxButtonsHint = WindowMinimizeButtonHint | WindowMaximizeButtonHint,WindowContextHelpButtonHint = 0x00010000,WindowShadeButtonHint = 0x00020000,WindowStaysOnTopHint = 0x00040000,WindowTransparentForInput = 0x00080000,WindowOverridesSystemGestures = 0x00100000,WindowDoesNotAcceptFocus = 0x00200000,MaximizeUsingFullscreenGeometryHint = 0x00400000,CustomizeWindowHint = 0x02000000,WindowStaysOnBottomHint = 0x04000000,WindowCloseButtonHint = 0x08000000,MacWindowToolBarButtonHint = 0x10000000,BypassGraphicsProxyWidget = 0x20000000,NoDropShadowWindowHint = 0x40000000,WindowFullscreenButtonHint = 0x80000000};
一、基础窗口类型
枚举值十六进制说明
Widget0x00000000普通控件,无特殊类型。常用于嵌入式子控件。
Window0x00000001独立窗口,拥有顶部标题栏和边框。
Dialog0x00000003对话框类型,有独立窗口属性,适合模态/非模态对话。
Sheet0x00000005macOS 风格的下拉式对话,附加于窗口上方。
Drawer0x00000007抽屉式面板,结合 Sheet 与 Dialog 特性。
Popup0x00000009弹出式窗口,如菜单或工具提示。
Tool0x0000000B工具窗口,用于辅助工具浮动面板。
ToolTip0x0000000D工具提示窗口,支持嵌入式提示。
SplashScreen0x0000000F启动屏幕窗口,在应用启动时显示。
Desktop0x00000011桌面窗口,覆盖整个屏幕。
SubWindow0x00000012子窗口,用于多文档界面(MDI)。QTBUG-115729 注意事项。
ForeignWindow0x00000021嵌入非 Qt 创建的外部窗口。
CoverWindow0x00000041覆盖式窗口,如全屏遮罩层。
二、类型掩码
枚举值十六进制说明
WindowType_Mask0x000000ff提取窗口基本类型所用掩码。
三、Windows 特定提示
枚举值十六进制说明
MSWindowsFixedSizeDialogHint0x00000100固定大小的对话框,不可调整。
MSWindowsOwnDC0x00000200独立的设备上下文(HDC)。
BypassWindowManagerHint0x00000400绕过窗口管理器,由应用控制窗口。
X11BypassWindowManagerHint0x00000400在 X11 下作用等同于上。
四、标题栏/边框控制
枚举值十六进制说明
FramelessWindowHint0x00000800无边框窗口,适合自定义界面。
WindowTitleHint0x00001000显示窗口标题栏。
WindowSystemMenuHint0x00002000提供窗口系统菜单。
WindowMinimizeButtonHint0x00004000显示最小化按钮。
WindowMaximizeButtonHint0x00008000显示最大化按钮。
WindowMinMaxButtonsHint0x0000C000同时显示最大化和最小化按钮。
WindowContextHelpButtonHint0x00010000显示上下文帮助按钮(问号)。
WindowShadeButtonHint0x00020000显示卷帘按钮。
五、行为提示
枚举值十六进制说明
WindowStaysOnTopHint0x00040000窗口总在最上层。
WindowTransparentForInput0x00080000不接收鼠标或键盘输入。
WindowOverridesSystemGestures0x00100000覆盖系统手势(如滑动)。
WindowDoesNotAcceptFocus0x00200000不接收焦点。
MaximizeUsingFullscreenGeometryHint0x00400000最大化时使用全屏大小。
六、自定义/特殊提示
枚举值十六进制说明
CustomizeWindowHint0x02000000开启窗口自定义行为配置。
WindowStaysOnBottomHint0x04000000窗口总在最底层。
WindowCloseButtonHint0x08000000显示关闭按钮。
MacWindowToolBarButtonHint0x10000000macOS 工具栏按钮支持。
BypassGraphicsProxyWidget0x20000000绕过 QGraphicsProxyWidget 限制。
NoDropShadowWindowHint0x40000000去除窗口阴影。
WindowFullscreenButtonHint0x80000000显示全屏切换按钮(macOS)。

一些提示

  • 建议使用位或组合已有 flags,这样不会覆盖原有设置:

    w->setWindowFlags(w->windowFlags() | Qt::FramelessWindowHint);
    
  • 而不是直接覆盖全部 flags,避免意外丢失已有设置,保持窗口行为的正确性。

  • 在某些平台(如 Windows、X11),需 show() 之后,才会看到 flags 的实际效果。

  • 特定组合注意

  • FramelessWindowHint 取消边框、标题,使窗口更灵活但可影响拖动等功能。

  • WindowStaysOnTopHint 强制置顶,不分应用可以使用户体验出现问题,需结合 parent 参数使用。

http://www.lryc.cn/news/581158.html

相关文章:

  • Eureka、Nacos、LoadBalance、OpenFeign​之间的区别联系和协作 (附代码讲解)
  • ROS 的 move_base 模块介绍
  • 爬虫-web请求全过程
  • vs2010怎么做网站/网络事件营销
  • 怎么学习做网站/购买友情链接网站
  • 南京师范大学课程建设网站/南宁网站建设公司排行
  • 佛山做app网站/小吃培训去哪里学最好
  • 做 爱 网站小视频下载/游戏代理300元一天
  • 北京的制作网站的公司/免费外链网站seo发布
  • 个人网站备案地址/中国搜索引擎有哪些
  • 建设交通人才网站/网络推广方案例子
  • 网站开发网页前置开发/seo网站诊断分析报告
  • 天元建设集团有限公司上市了吗/天津seo排名收费
  • 响应式网站开发的/合肥瑶海区房价
  • 政协网站建设/兰州seo优化
  • 天府新区建站公司/互联网公司排名100强
  • 西安十大网络公司排名/关键词seo价格
  • 石狮网站开发/网站优化排名易下拉霸屏
  • 宜春做网站 黑酷seo/外链在线生成
  • 做网站需要用到什么/网域名解析ip查询
  • 做网站素材/广州网站建设方案维护
  • 明年做那些网站能致富/搜索引擎关键词的工具
  • 网站建设运维合同/百度电脑版官网
  • 该网站的域名已经被其他人绑定/信息流优化师是做什么的
  • 做印刷广告的图片在哪个网站找/网络销售靠谱吗
  • 建设个人网站/如何自己免费制作网站
  • 南京越城建设集团网站/软件开发公司排行榜
  • 企业网站源码 多语言/网络营销公司
  • 十大知名平面设计公司/搜索引擎优化英文简称为
  • 政府网站建设费用增加/白杨seo课程