Qt中设置属性setAttribute(Qt::WA_DeleteOnClose)报错的情况

在Qt的Gui编程中,经常会用到QWidget和其子类作为父控件来显示,其上添加有若干控件。

在关闭QWidget及其子类窗口时需销毁窗口。

如果是在是定义在栈上:

MainWindow w;
 w.show();

在构造函数中增加:setAttribute(Qt::WA_DeleteOnClose)以后,

会在关闭时出现异常,因为当退出main方法时,会自动销毁窗口,而setAttribute方法会使得Qt再次销毁窗口,造成二次delete,产生报错。

如果定义在堆上 :

MainWindow  *w = new MainWindow ; 
w->show();

  在关闭时main方法不会自动销毁,而Qt会根据setAttribute设置销毁。不会报错。


你可能感兴趣的:(Qt中设置属性setAttribute(Qt::WA_DeleteOnClose)报错的情况)