Qt程式異常終止的原因:
一、在使用指標之前,要進行指標是否為null的判斷,如果為NULL卻直接使用該指標,就會異常終止。如在QTableView:
QStandardItemModel *model = new QStandardItemModel;
model->item(0,1)->text()
單元格沒編輯過,直接用 model->item(0,1)->text() 的話,程式會異常終止。
二、解構函式中加入釋放記憶體的delete程式碼後,關閉Qt應用程式,會出現程式異常終止,去掉析構函數里delete的程式碼就沒有問題了。我是在工程中額外新增一個繼承自QTableView的Qt設計師介面類,並在ui_widget.h中,即widget.ui介面的原始碼中,將QTableView改為我這個新增的類的類名。在新建的類的cpp檔案中,註釋掉
,ui(new Ui::CTblView);
ui->setupUi(this);
兩行,但沒有註釋掉
delete ui;
原因和第一點一樣,ui定義了沒有使用,就直接delete,故而導致程式異常終止。也註釋掉這行就正常了。
三、指標物件沒有例項化就進行引用
如:
Dialog *d;d = new Dialog;d->show();如果忘了第二行的例項化,也會導致Qt程式異常終止。
Qt程式異常終止的原因:
一、在使用指標之前,要進行指標是否為null的判斷,如果為NULL卻直接使用該指標,就會異常終止。如在QTableView:
QStandardItemModel *model = new QStandardItemModel;
model->item(0,1)->text()
單元格沒編輯過,直接用 model->item(0,1)->text() 的話,程式會異常終止。
二、解構函式中加入釋放記憶體的delete程式碼後,關閉Qt應用程式,會出現程式異常終止,去掉析構函數里delete的程式碼就沒有問題了。我是在工程中額外新增一個繼承自QTableView的Qt設計師介面類,並在ui_widget.h中,即widget.ui介面的原始碼中,將QTableView改為我這個新增的類的類名。在新建的類的cpp檔案中,註釋掉
,ui(new Ui::CTblView);
ui->setupUi(this);
兩行,但沒有註釋掉
delete ui;
原因和第一點一樣,ui定義了沒有使用,就直接delete,故而導致程式異常終止。也註釋掉這行就正常了。
三、指標物件沒有例項化就進行引用
如:
Dialog *d;d = new Dialog;d->show();如果忘了第二行的例項化,也會導致Qt程式異常終止。