删除的树项目仍在运行QStyledItemDelegate

时间:2012-06-15 23:03:56

标签: python qt delegates pyqt

当我使用此代码从树中删除项目时,该项目被删除但代理仍在运行:

# I do this from inside an item that has a reference to its tree-owner....
index = self.tree.indexFromItem(self)
self.tree.model().removeRow(index.row(), index.parent())

是否有一些参考资料我必须弄清楚才能让它正确地放弃该项目的油漆?

如果我清除树并重建它,它可以正常工作,但我试图更直接地做到这一点。

更多细节...... 我的GUI用于3D应用程序。树项访问3D应用程序API中的节点。我删除3D应用程序中的节点时删除项目(尝试将我的树同步到场景)。我看到的是该项已成功从树中删除,但由于我对3D应用程序节点的引用不好而引发错误。如果我点击错误重复一遍又一遍。我不确定每次是否失败,或者第一个错误是否打破了GUI导致重复错误,就好像它中断了清理一样。

我尝试将我所有项目的成员/属性设置为无,但我不确定这是否真的杀死了引用,或者当垃圾收集器完成其工作时等等。

2 个答案:

答案 0 :(得分:0)

我认为你正在使用自己的模型。 removeRow()只是一个调用removeRows()的便捷函数。向我们展示removeRows()的代码,这可能是问题所在。

您是否在beginRemoveRows()的实施中致电endRemoveRows()removeRows()

答案 1 :(得分:0)

我必须假设这只是一个异步更新,其中删除行调用正在击败更新的委托。我添加了保护来消除错误,一切似乎都正常。