一、最近使用QT,写了一个小小的Demo,在关闭窗口时总是报错。
二、原因
1.Qt初始化时有两种构造方式:
//(1)将窗口对象定义在栈上
MainWindow w;
w.show();
//(2)将窗口对象定义在堆上
MainWindow *w = new MainWindow;
//QT setAttribute原型,当on为true时,设置当前窗口的状态attribute为开启状态,
//其他则清除当前attribute状态。
void QWidget::setAttribute ( Qt::WidgetAttribute attribute, bool on = true);
2.使用WA_DeleteOnClose属性后,当你new出来这个类对象指针时,你可以不用手动析构,窗口关闭后,它会自动析构当前窗口对象指针。但是当前窗口若定义在栈上,w是一个对象而不是指针,显然不正确,而报断言错误的原因则是当程序执行到这里是“w指针"不存在,故而报出断言错误。
setAttribute(Qt::WA_DeleteOnClose,true);