在Qt GUI编程中,关闭QWidget及其子类窗口时需销毁窗口时:
一、如果你定义在栈上:
MainWindow w;
w.show();
在构造函数中增加了:setAttribute(Qt::WA_DeleteOnClose),那么关闭的时候会出现异常情况,因为main退出的时候,会自动的销毁窗口,而setAttribute(Qt::WA_DeleteOnClose)再次销毁窗口,造成二次delete,会出错。
二、如果你定义在堆上
MainWindow *w = new MainWindow ;
w->show();
在构造函数中增加了:setAttribute(Qt::WA_DeleteOnClose),在关闭时,main不会自动销毁窗口,因而setAttribute(Qt::WA_DeleteOnClose)会销毁一次窗口,所以不会出错。