首页| 论坛| 消息

回复: 关于Qt应用程序中途关闭后,再重启出现应用程序已停止工作,问题事件名称:APPCRASH
#6 回 圣域天子 的帖子 [lwei24 05-17 10:33]
圣域天子:建议改用 qApp->quit(); (2023-05-16 21:10) 
哦哦,请问改用qApp->quit();和QThread::exit(0);或QThread::exit(-1);有什么不一样的效果或意义吗?
#7 [20091001753 05-17 11:46]
exit(),就是整个程序终止,他是C语言官方自带的函数,跟 Qt 没关系
qApp->quit(),是 Qt 的程序终止,它依赖于 Qt 事件循环。
QThread::exit(),只是终止该线程,而它跟进程结束没有直接关系。
你认为窗口关闭了,那么就会立即触发窗口的析构函数,所以怀疑自己检查多遍的析构函数出了问题。
但实际情况是,窗口关闭是产生一个 closeEvent 事件,并不必然会触发窗口析构,因为窗口也是可以隐藏的 hide()
而且,就算你所有窗口都关闭了、析构了,也不代表进程就会退出。
总之,你的析构函数有没有触发,是谁阻碍了触发,这就需要你排查。
#8 回 20091001753 的帖子 [lwei24 05-18 08:49]
20091001753:exit(),就是整个程序终止,他是C语言官方自带的函数,跟 Qt 没关系
qApp->quit(),是 Qt 的程序终止,它依赖于 Qt 事件循环。
QThread::exit(),只是终止该线程,而它跟进程结束没有直接关系。
你认为窗口关闭了,那么就会立即触发窗口的析构函数,所以怀疑自己检查多遍的析 .. (2023-05-17 11:46) 
好的,多谢了

<< 1 2 >> (2/2)

回复 发表
主题 版块