QT Expression:_BLOCK_TYPE_IS_VALID断言错误

一、最近使用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);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章