closeEvent()和析构函数?

addfourliu 2012-07-11 04:32:23
最近在调试bug,关闭程序的时候,虚构函数进不去,不知道怎么回事?

但是用closeEvent()可以响应,于是试着将析构函数中的内容放到closeEvent中,但是此时,子类的析构函数执行了不止一遍,当然在第二遍的时候,就崩溃掉了。。。
...全文
444 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
addfourliu 2012-07-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
你的理解是正确的,当A被delete的时候会进入析构。由于B没有指定父对象,所以必须在析构里面手动删除,至于closeEvent与析构执行顺序是先执行closeEvent然后执行析构。
[/Quote]
谢谢啦!继续断点测试,什么地方异常关闭。。。
xiebin133 2012-07-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
引用 5 楼 的回复:
引用 2 楼 的回复:
看看是不是因为某个parent-child关系导致某个object被销毁了两次?

引用 3 楼 的回复:
一个变量的生命周期结束了,就被析构了
注意在Qt里面,一个parent变量结束了,他所有的child变量也会被析构

你说的在parent中删两次是调用的啥函数删除?

“parent结束了”是什么意思呢? 我没有在pare……
[/Quote]
你的理解是正确的,当A被delete的时候会进入析构。由于B没有指定父对象,所以必须在析构里面手动删除,至于closeEvent与析构执行顺序是先执行closeEvent然后执行析构。
addfourliu 2012-07-12
  • 打赏
  • 举报
回复
问题仍为解决。。。。
addfourliu 2012-07-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
引用 2 楼 的回复:
看看是不是因为某个parent-child关系导致某个object被销毁了两次?

引用 3 楼 的回复:
一个变量的生命周期结束了,就被析构了
注意在Qt里面,一个parent变量结束了,他所有的child变量也会被析构

你说的在parent中删两次是调用的啥函数删除?
[/Quote]
“parent结束了”是什么意思呢? 我没有在parent中对child进行删除,我是想在析构函数中对child进行删除。
我是这样理解的,可能不对:
比如:class A :public QDialog,我在A中new了一个B,B没有指定父对象。以我的理解,当我关闭Dialog窗口的时候,程序会进入到~A(){} 中,所以我在~A(){}中通过 delete B;将B给删除掉。
zhu_xz 2012-07-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

一个程序运行到什么时候,才会进入它的析构函数呢?!
main()函数执行完毕?还是关闭改程序?
[/Quote]
一个变量的生命周期结束了,就被析构了
注意在Qt里面,一个parent变量结束了,他所有的child变量也会被析构

你说的在parent中删两次是调用的啥函数删除?
addfourliu 2012-07-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
看看是不是因为某个parent-child关系导致某个object被销毁了两次?
[/Quote]
是不是我在parent中删除child两次,就会执行child的析构函数两次呢?!

还有上面那个问题,我也想听听您的看法。。。
addfourliu 2012-07-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
那你单步看看,是哪个函数关闭了全部。。

closeEvent()只是关闭窗口事情,
[/Quote]

一个程序运行到什么时候,才会进入它的析构函数呢?!
main()函数执行完毕?还是关闭改程序?
zhu_xz 2012-07-11
  • 打赏
  • 举报
回复
看看是不是因为某个parent-child关系导致某个object被销毁了两次?
shen_wei 2012-07-11
  • 打赏
  • 举报
回复
那你单步看看,是哪个函数关闭了全部。。

closeEvent()只是关闭窗口事情,

16,201

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧