2013-07-15 57 views
0

我正在使用QTreeView和QAbstractItemModel來建立其數據也來自樹結構的視圖。但是當我從樹結構(數據源)中刪除一個節點時,我發現模型視圖不能自動調整自己,它也使用無效指針,我不知道它指向哪個內存塊。我不知道如何刷新或者我需要做些什麼來解決這個問題。如何刪除模型視圖中的項目?

回答

3

要從模型中刪除數據,請使用beginRemoveRows()endRemoveRows()beginRemoveRows告訴您現在將改變基礎數據結構的模型。 然後更改結構並在完成時調用endRemoveRows。然後endRemoveRows將觸發通知,以更新的觀點:

beginRemoveRows(QModelIndex(), 0, 0); 
m_topLevelNodes.remove(0); 
endRemoveRows(); 

這消除了第一個頂級行(及其子女),假設模型中的底層結構保存在一個容器中的頂級樹項目名爲m_topLevelNodes

相關問題