qt程式崩潰最常見的應該是記憶體溢出,這是程式設計習慣造成的,
比如:用Qlist的時候,沒有檢查Qlist.size()的大小,直接就.at()了,這樣就造成程式崩潰。
還有就是指針為NULL,結果做為參數或者直接操作使用。也會造成程式崩潰。
是以任何函數,隻要帶有參數。一定要對參數進行判斷,特别是指針或者引用。
接下來介紹一種奇葩的程式崩潰現象。
第一步,我們在ui界面上添加一個按鈕Qpushbutton,和一個QlineEdit,
第二步,在按鈕的槽函數中寫如下代碼;
void Widget::on_pushButton_clicked()
{
for (int i = 0; i < 10; i++)
{
ui->lineEdit->setText (i);
}
}
然後我們運作程式,我們可以看到界面上隻會顯示9這個數字;
接着:我們改一下代碼:
void Widget::on_pushButton_clicked()
{
for (int i = 0; i < 10; i++)
{
ui->lineEdit->setText (i);
QThread::msleep (1);
}
}
我們添加一個延時1秒,我們運作後看到的是,9秒後顯示的數字是9,之前都沒有顯示任何數字;
而且會發生一件事情就是,如果你點選其他按鈕,或者空白區域會造成程式崩潰;
為什麼會造成崩潰,我想不用說大家也清楚吧,因為按鈕的點選槽函數還沒有執行完成,又點選了其他事件。因為程式是單線程,還在for循環中運作,是以崩潰掉了,