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 を壊して、クリーンアップを中断したかのように繰り返しエラーを引き起こしているのかはわかりません。

アイテムのすべてのメンバー/属性を None に設定しようとしましたが、それが実際に参照を強制終了するかどうか、またはガベージ コレクターがその仕事をいつ行うかなどはわかりません。

4

2 に答える 2

0

自分のモデルを使っていると思います。removeRow()を呼び出す便利な関数ですremoveRows()。のコードを見せてくださいremoveRows()。問題が発生している可能性があります。

あなたは電話をかけbeginRemoveRows()endRemoveRows()いて、あなたの実装の範囲内removeRows()ですか?

于 2012-06-16T04:45:39.587 に答える
0

これは、行の削除呼び出しが更新のデリゲートを打ち負かしている単なる非同期更新であると想定する必要があります。エラーを黙らせるために保護を追加しましたが、すべて正常に動作しているようです。

于 2012-07-09T21:25:14.003 に答える