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