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

Qt::AA_DontCreateNativeWidgetSiblings使用注意事项

当切换 QMdiArea 的子窗口时,有一个窗口会“弹出来”浮动在其他窗口上方,造成重叠。

这个问题的确可能是因为你设置了:


QGuiApplication::setAttribute(Qt::AA_DontCreateNativeWidgetSiblings);
🧾 这个属性 Qt::AA_DontCreateNativeWidgetSiblings 是干什么的?
这个属性的作用是:

禁止 Qt 为同级 widget 创建原生平台窗口(比如 HWND、NSWindow 等)

主要用于优化资源、嵌入式场景等。但在 QMdiArea 中,会引起子窗口的一些异常行为。

❗ 它会造成哪些问题?
QMdiSubWindow 的 tab 管理依赖于原生窗口机制。

设置这个属性后,tab 化的窗口在切换时,可能会“脱离 tab”,浮动出来。

Qt 无法正确管理这些窗口的层级、焦点和布局。

✅ 正确做法:
如果你没有特殊需求,建议你 不要设置这个属性:


// 删掉或注释掉这行
// QGuiApplication::setAttribute(Qt::AA_DontCreateNativeWidgetSiblings);
如果你必须设置它(比如某些嵌入式平台),那么:

建议 不要使用 QMdiArea 的 TabbedView 模式,改用 SubWindowView;

或者 避免子窗口设置为 Qt::Window 类型,强制为 Qt::Widget。

✅ 建议小结:
需求    建议
使用 QMdiArea 的 tab 模式    不要设置 AA_DontCreateNativeWidgetSiblings
必须设置该属性    改用子窗口模式,不使用 tab,或避免子窗口使用 Qt::Window 类型

http://www.dtcms.com/a/312889.html

相关文章:

  • 游戏设计原理
  • Flutter开发 dart异步
  • Linux网络编程 ---五种IO模型
  • 基于 Spring Boot + Vue 实现人脸采集功能全流程
  • Python----大模型(从预训练到分布式优化的核心技术解析)
  • 2、RabbitMQ的5种模式基本使用(Maven项目)
  • 迈向透明人工智能: 可解释性大语言模型研究综述
  • ubuntu apt安装与dpkg安装相互之间的关系
  • Python 实例属性与方法命名冲突:一次隐藏的Bug引发的思考
  • 途游Android面试题及参考答案
  • 【GitHub探索】Agent开发平台CozeStudio开源版本踩坑体验
  • pycharm上如何添加conda环境
  • 嵌入式 C 语言入门:多文件编程实践笔记 —— 从文件创建到调用
  • 为何:内存数据断电即逝,硬盘数据牢笼长存
  • LangChain框架概念及简单的使用案例
  • ABP VNext + CloudEvents:事件驱动微服务互操作性
  • 计算机核心概念辨析与解析
  • 24SpringCloud黑马商城部署Java应用后浏览器访问数据库不显示数据的解决办法
  • 可持久化线段树 系列 题解
  • 【Python✨】解决 Conda 安装 MoviePy 报错问题
  • GitCode疑难问题诊疗
  • 12.Redis 主从复制
  • deep research|从搜索引擎到搜索助手的实践(一)
  • 企业自动化交互体系的技术架构与实现:从智能回复到自动评论—仙盟创梦IDE
  • 三、驱动篇-HDF驱动介绍1
  • 语义分割--Fcn
  • 回顾MDP的概念
  • RabbitMQ面试精讲 Day 8:死信队列与延迟队列实现
  • dbdiagram:一款简洁高效的免费数据库设计工具
  • 二叉树算法之【前序遍历】