2013-07-15 31 views
0

我正在使用QTreeView和QAbstractItemModel来建立其数据也来自树结构的视图。但是当我从树结构(数据源)中删除一个节点时,我发现模型视图不能自动调整自己,它也使用无效指针,我不知道它指向哪个内存块。我不知道如何刷新或者我需要做些什么来解决这个问题。如何删除模型视图中的项目?

回答

3

要从模型中删除数据,请使用beginRemoveRows()endRemoveRows()beginRemoveRows告诉您现在将改变基础数据结构的模型。 然后更改结构并在完成时调用endRemoveRows。然后endRemoveRows将触发通知,以更新的观点:

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

这消除了第一个顶级行(及其子女),假设模型中的底层结构保存在一个容器中的顶级树项目名为m_topLevelNodes

相关问题