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);

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