查看完整版本: [-- 我的窗口关闭后为什么没有调析构函数? --]

QTCN开发网 -> Qt基础编程 -> 我的窗口关闭后为什么没有调析构函数? [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

seraphliu 2006-05-23 16:43

我的窗口关闭后为什么没有调析构函数?

RT,谢谢了

seraphliu 2006-05-24 09:35
没有回答?

shiroki 2006-05-24 16:28
这个问题很复杂,呵呵

你的widget有parent吗?
  如果有,parent析构的时候会调你widget的析构函数...

你的widget是怎么创建的(new出来的? 临时变量?)?
  new出来的要调delete才会析构...

有没有给widget设置WDestructiveClose这个flag?
  如果设了会在close的时候析构,否则....

seraphliu 2006-05-24 17:45
我的窗口没有parent,是个widget,不是一个mainwindow对象,相当一个主窗口,是在main里new出来的,但是我不知道在什么地方delete它好?
我现在的做法是去获得closeEvent,在closeEvent里面释放自己new的资源,但是不知道QT控件的资源释放没有?

shiroki 2006-05-25 14:11
主窗口还需要释放资源吗? 主窗口关闭应该是程序都退出了,还释放什么资源阿。
我在上面那个帖子里已经说了几种情况, 如果你的不符合就不会释放资源。 照你的情况可以试试这个WDestructiveClose

seraphliu 2006-05-25 19:00
程序退出是对的,但是不释放资源的话,还不是在内存有很多的野指针存在,其他的程序也不能使用这段空间了
我试试WDestructiveClose这东西,谢谢你

fygenius 2006-06-14 16:04
你用new 来构造对象。然后释放的时候delete 就会调用西沟函数了。
否则要到你close你住窗口才会西沟

tuizi7835 2006-06-16 13:45
是正常退出吗?检查一下有没有类似exit()的函数。

fygenius 2006-06-19 12:26
窗口关闭不等于对象销毁~ 这是两个概念

lanmanck 2020-07-27 17:32
我也发现了,新建一个mainwindow工程,关闭时居然不调用析构函数,打断点和qdebug都见到没进去,为何?


查看完整版本: [-- 我的窗口关闭后为什么没有调析构函数? --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled