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

296_C++_一个dialog对话框在执行exec向系统发送一个延后销毁事件时,另一个对话框立刻接管了上一个对话框的销毁事件,导致死UI

1、根因分析

-根因分析:当有新版本并且grade等级是2的时候,点击ptz的时候使用的是RSDialog,WA_DeleteOnClose属性默认是为true的,
并且是栈上的变量,当关闭ptz的时候,diolog的exec结束会向系统发送延后销毁事件,此时退出ptz会弹出自动升级对话框,接管了
事件循环,则会调用前面对话框的删除事件,相当于删除了栈上的变量
-解决方案: 1.可把ptz的dialog修改为new出来的方式 、2.设置WA_DeleteOnClose属性为false,让它栈上自己销毁

2、WA_DeleteOnClose 是 QWidget 类的一个属性,用于指定在窗口关闭时是否自动释放内存。

WA_DeleteOnClose并不是一个变量,而是Qt框架中对于QWidget的一个属性。

WA_DeleteOnClose 是 QWidget 类的一个属性,用于指定在窗口关闭时是否自动释放内存。如果设置为 true,窗口关闭时,QWidget 对象会被自动删除,释放其在堆上分配的内存;如果设置为 false,则对象不会被自动删除,需要手动释放内存。

关于"栈上的变量"的提到,可能是在上下文中提到了对话框对象是在栈上创建的,但与 WA_DeleteOnClose 属性本身无关。这个属性影响的是在堆上分配的内存的释放行为。

所以,关于解决方案中的两点:

  1. 将"ptz"的对话框改为在堆上动态分配内存(使用new),是

http://www.kler.cn/a/160724.html

相关文章:

  • 假期增设:福祉与负担并存,寻求生活经济平衡之道
  • 【C++】一种针对代码的连续条件检查方案,累计布尔结果
  • 什么是数字图像?
  • 【算法】——二分查找合集
  • 读数据质量管理:数据可靠性与数据质量问题解决之道03数据目录
  • Unity3D学习FPS游戏(12)敌人检测和攻击玩家
  • 定时器的使用及实现
  • MySQL - 并发控制与事务的隔离级别
  • 微服务实战系列之Redis
  • 安卓发布小技巧
  • 一键AI智能改写,一键AI智能生成原创文章
  • 网络安全(一)--网络环境构成,系统的安全
  • 外包干了3个月,技术倒退2年。。。
  • 修改错误的代码和改正错误的人生一样重要
  • 智能成绩表 - 华为OD统一考试(C卷)
  • 台灯应该买什么样的才能护眼?学生护眼必备护眼台灯推荐
  • 【毕业设计】基于雷达与深度学习的摔倒检测——微多普勒效应
  • Linux虚假唤醒
  • Unity传送门特效: The Beautiful Portal/Level up/Teleport/Warp VFX
  • 网络安全缓冲区溢出实验
  • Linux C语言 37- 进程间通信IPC
  • Python读写txt文件数据
  • vue管理系统模版
  • 编织魔法世界——计算机科学的奇幻之旅
  • [C++] new和delete
  • 自定义插件vue-router简单实现hashRouter设计思路