天天看點

QT5 treewidget::clear()時出錯

使用qt程式設計時發現一個詭異的錯誤,運作完主程式,點選退出的時候,在Mainwindow的析構函數中直接delete ui出錯,網上查了很多資料說是treewidget的問題,本人确實有在ui中使用treewidget,資料的解決方法是先加上treewidget.clear()函數,詭異的是出現了另一個錯誤:

QT5 treewidget::clear()時出錯

看到無效棧指針就知道是delete treewidget裡的toplevelitem出錯了。果然,在析構函數中調用delete treewidget.toplevelitem出了一樣的錯。猜測是topleveltem的子項的問題,最終找到了解決辦法

解決辦法:将析構函數添加:

while(ui->treeWidget->topLevelItemCount()>0){
        ui->treeWidget->takeTopLevelItem(0);
    }
    ui->treeWidget->clear();
           

問題解決,估計是在toplevelitem中添加子項的問題,無添加子項的無需此操作,take相當于将toplelveitem與treewidget暫時解除父子關系,此錯誤原因任不詳。

繼續閱讀