1

当我使用此代码从树中删除一个项目时,该项目被删除但委托继续运行:

# 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,就好像它中断了清理一样。

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

4

2 回答 2

0

我想你正在使用你自己的模型。removeRow()只是一个调用removeRows(). 向我们展示 的代码removeRows(),这很可能是问题所在。

您是否正在调用beginRemoveRows()endRemoveRows()在您的实施范围内removeRows()

于 2012-06-16T04:45:39.587 回答
0

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

于 2012-07-09T21:25:14.003 回答