我有一个可编辑的QTreeWidget
,并希望每次用户编辑一个项目时更新一些内部结构。但是,当某些项目发生变化时,没有专门发出信号。有itemChanged()
,但它不仅在项目更改时发出,而且在创建时也发出。到目前为止,我找不到一种优雅的方式来区分这两种情况。
我发明的唯一解决方案是这样的:
# 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
每当我向树中添加新项目时,我都必须手动设置,这在代码中的很多地方都会发生。