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

关于窗口关闭释放内存,主窗口下的子窗口关闭释放不用等到主窗口关闭>setAttribute(Qt::WA_DeleteOnClose);而且无需手动释放

‌QWidget重写closeEvent后,点击关闭时释放内存会调用析构函数‌,但需注意内存释放的时机和方式。

关闭事件与析构函数的关系
重写closeEvent时,若在事件处理中调用deleteLater()或手动删除对象,析构函数会被触发。但需注意:

deleteLater()会将删除操作推迟到事件循环结束后执行,避免在事件处理中直接析构导致问题 。 ‌12
若仅调用close()而未设置Qt::WA_DeleteOnClose属性,窗口对象不会被销毁,析构函数也不会立即调用 。 ‌13
内存释放的两种方式
自动释放:
设置属性Qt::WA_DeleteOnClose,关闭窗口时自动调用析构函数并释放内存 。 ‌13
cpp
Copy Code
widget->setAttribute(Qt::WA_DeleteOnClose);
手动释放:
重写closeEvent,显式调用deleteLater()或delete 。 ‌24
cpp
Copy Code
void closeEvent(QCloseEvent *event) override {
deleteLater(); // 安全释放
event->accept();
}
注意事项
父对象管理:若QWidget有父对象,父对象析构时会自动销毁子对象,无需手动释放 。 ‌5
异常风险:栈上对象关闭时若设置Qt::WA_DeleteOnClose可能导致异常,堆上对象则无此问题 。 ‌

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

相关文章:

  • 【Python】QT(PySide2、PyQt5):列表视图、模型、自定义委托
  • 【芯片后端设计的灵魂:Placement的作用与重要性】
  • SQL 语句拼接在 C 语言中的实现与安全性分析
  • 跨语言统一语义真理及其对NLP深层分析影响
  • 2.3零基础玩转uni-app轮播图:从入门到精通 (咸虾米总结)
  • Python 实战:内网渗透中的信息收集自动化脚本(3)
  • 苹果公司即将启动一项为期三年的计划
  • Linux应急响应一般思路(三)
  • 蜗牛播放器 Android TV:解决大屏观影痛点的利器
  • C/C++ 指针与函数
  • Tesseract OCR之页面布局分析
  • 朴素贝叶斯:用 “概率思维” 解决分类问题的经典算法
  • ​Visual Studio + UE5 进行游戏开发的常见故障问题解决
  • 【区间DP】P1063 [NOIP 2006 提高组] 能量项链
  • 基于深度学习的人声分离系统设计与实现
  • Apache Commons Math_Java科学计算的利器
  • AP服务发现中两条重启检测路径
  • 南京魔数团:AR技术引领远程协作新纪元
  • C++ Core Guidelines 核心理念
  • ios webgl音频问题
  • 深入解析:为什么应该避免使用 atoi、atol 和 atof 函数
  • 集成算法概述与分类
  • 大数据毕业设计选题推荐-基于大数据的超市销售数据统计分析系统-Hadoop-Spark-数据可视化-BigData
  • 【opengl 实践】 windows下vscode配置遇到的问题
  • week4-[二维数组]幻方检测
  • 【Android】Activity和Fragment之间的通讯
  • 大型电动化工程机械设备智能施工试验场的网络设计方案
  • java基础(十五)计算机网络
  • 【栈 - LeetCode】739.每日温度
  • 深入理解JVM垃圾收集器:垃圾收集器