私は編集可能QTreeWidget
で、ユーザーがアイテムを編集するたびにいくつかの内部構造を更新したいと思っています。ただし、一部のアイテムが変更された場合に特に発せられる信号はありません。ありますがitemChanged()
、アイテムを変更したときだけでなく、作成したときにも放出されます。これまでのところ、2つのケースを区別するためのエレガントな方法を見つけることができません。
私が発明した唯一の解決策は次のようなものでした:
# slot for itemClicked()
def EditName(self, item, column):
self.oldname = item.text(0)
# slot for itemChanged()
def RenameFile(self, item, column):
newname = item.text(0)
if newname != self.oldname:
# Do something with newname here
self.oldname
ただし、ツリーに新しいアイテムを追加するたびに手動で設定する必要があるため、あまり便利ではありません。これは、コード内の非常に多くの場所で発生します。