为了实现通过右键菜单重命名QTreeWidget中item值,通过右键开启编辑的输入框,回车提交后关闭输入框,且不能够通过双击再次开启输入框。
主要思路是,在提交编辑结果时设置item为不可编辑,从而避免双击再次开启输入框。
1、关键函数
QTreeWidget.editItem()
QTreeWidget.commitData()
QTreeWidget.setEditTriggers()
QTreeWidgetItem.setFlags()
2、相关代码
edit_item()为点击右键相关菜单对应的触发函数
def edit_item(self):
'''
开启item编辑框
'''
item = self.currentItem()
if item:
# 设置当前item可编辑
item.setFlags(item.flags() | Qt.ItemIsEditable)
# 开始编辑
self.editItem(item)
重写commitData()
def commitData(self, editor: QWidget) -> None:
'''
提交编辑数据
'''
self.setEditTriggers(QAbstractItemView.NoEditTriggers) # 关闭编辑
name = editor.text()
if not name:
return
return super().commitData(editor)