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