Qt [GC9-12]:中途遇到问题解决 析构函数无法释放资源

举报
DreamLife 发表于 2022/04/14 22:39:46 2022/04/14
【摘要】 基于Qt的汽车仪表模拟 在我准备开始写HUD的时候,发现一个新的问题。 那就是我开始将我的资源释放都写在了控制台的析构函数中,但是呢,在程序结束的时候却不会释放我的资源,这点搞得我好烦啊,析构函数不就是在程序结束的时候释放资源吗。   那么具体表示就是我在控制台中创建了HUD窗口,并且在控制台的析构函数中实现...

基于Qt的汽车仪表模拟

在我准备开始写HUD的时候,发现一个新的问题。

那就是我开始将我的资源释放都写在了控制台的析构函数中,但是呢,在程序结束的时候却不会释放我的资源,这点搞得我好烦啊,析构函数不就是在程序结束的时候释放资源吗。

 

那么具体表示就是我在控制台中创建了HUD窗口,并且在控制台的析构函数中实现了对HUD窗口的回收。但是呢,结果却是当我结束控制台程序的时候,HUD窗口并没有随之消失,依旧显示在说面上。代码如下


  
  
  1. ControlPanel::~ControlPanel()
  2. {
  3. if(timer_Change_Jianwei_Color)
  4. {
  5. timer_Change_Jianwei_Color->stop();
  6. delete timer_Change_Jianwei_Color;
  7. timer_Change_Jianwei_Color = NULL;
  8. }
  9. if(timer_Get_Current_Time)
  10. {
  11. timer_Get_Current_Time->stop();
  12. delete timer_Get_Current_Time;
  13. timer_Get_Current_Time = NULL;
  14. }
  15. if(myHUD)
  16. {
  17. myHUD->close();
  18. delete myHUD;
  19. myHUD = NULL;
  20. }
  21. delete ui;
  22. }

对应的解决方法是啥,其实很很简单,就是我自己写一个资源回收的含,在控制台程序结束的时候先调用我的资源回收,完了吧控制台的关闭函数写在我的资源函数回收里面就好了。代码如下

 


  
  
  1. void ControlPanel::my_Close()
  2. {
  3. if(timer_Change_Jianwei_Color)
  4. {
  5. timer_Change_Jianwei_Color->stop();
  6. delete timer_Change_Jianwei_Color;
  7. timer_Change_Jianwei_Color = NULL;
  8. }
  9. if(timer_Get_Current_Time)
  10. {
  11. timer_Get_Current_Time->stop();
  12. delete timer_Get_Current_Time;
  13. timer_Get_Current_Time = NULL;
  14. }
  15. if(myHUD)
  16. {
  17. myHUD->close();
  18. delete myHUD;
  19. myHUD = NULL;
  20. }
  21. this->close();
  22. }

2019/07/21 17:42

 

 

文章来源: dreamlife.blog.csdn.net,作者:DreamLife.,版权归原作者所有,如需转载,请联系作者。

原文链接:dreamlife.blog.csdn.net/article/details/97241214

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。