You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何取消QMainWindow的Qt.FramelessWindowHint窗口标志?

Qt 窗口边框动态切换方案(初始无边框,后续恢复)

核心解决逻辑

Qt中修改窗口标志后,必须触发窗口重绘才能生效。直接移除FramelessWindowHint标志后,需要恢复默认窗口的基础属性并刷新窗口状态。

代码示例

  • 初始设置无边框窗口
# 初始化阶段设置无边框
self.setWindowFlag(Qt.FramelessWindowHint)
self.show()
  • 后续恢复带边框窗口
# 移除无边框标志
self.setWindowFlag(Qt.FramelessWindowHint, False)
# 恢复窗口默认基础属性(可根据需求调整)
self.setWindowFlag(Qt.Window, True)
self.setWindowFlag(Qt.WindowTitleHint, True)
self.setWindowFlag(Qt.WindowSystemMenuHint, True)
self.setWindowFlag(Qt.WindowMinMaxButtonsHint, True)
# 触发窗口重绘,使标志修改生效
self.show()

注意事项

  • 必须通过setWindowFlag(flag, False)的形式移除指定标志,仅设置新标志无法覆盖原有配置。
  • 调用show()或setVisible(True)是关键,Qt需要重新渲染窗口边框样式才能完成切换。
  • 若窗口有其他自定义标志,可按需保留或恢复对应配置,不影响核心的边框切换逻辑。

内容的提问来源于stack exchange,提问作者atiya khodari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 17:01:05