inQListWidget
可以setEditTriggers(QtWidgets.QAbstractItemView.SelectedClicked)
用于所有项目setFlags(QtCore.Qt.ItemIsSelectable|QtCore.Qt.ItemIsEnabled|QtCore.Qt.ItemIsEditable)
,然后在第一次单击时选择项目,
在第二个洞文本
并且可以通过鼠标选择部分文本
编辑 24.03.2015
为了防止用户以这种方式编辑子类QstyledItemDelegate
(我在 PyQt5 中做到了)
class MyDelegate(QtWidgets.QStyledItemDelegate):
def __init__(self):
QtWidgets.QStyledItemDelegate.__init__(self)
def setModelData(self,editor,model,index):
pass # no changes are written to model
并将此委托用于列表小部件:
self.delegate = MyDelegate()
self.listWidget.setItemDelegate(self.delegate)
用户可以删除或更改项目文本,编辑完成后会出现原始文本
编辑 25.03.15:添加
def eventFilter(self,editor,event):
if event.type() == QtCore.QEvent.KeyPress and event.key() not in (QtCore.Qt.Key_Control, QtCore.Qt.Key_C):
return True
return QtWidgets.QStyledItemDelegate.eventFilter(self, editor, event)
给委托人,用户不能编辑项目的文本,他们只能从他那里复制