当我继承QListWidgetItem
时,我重新实现setData
,我重置了项目的文本属性,编辑没有通过,但文本只是恢复到编辑器之前的状态开了:
class ListItem(QtGui.QListWidgetItem):
def __init__(self, text, listWidget):
QtGui.QListWidgetItem.__init__(self, text)
self.listWidget = listWidget
self.string = text
def setData(self, role, value):
if role == QtCore.Qt.EditRole:
print "new value, previous value: ", value, self.string
self.string = value
return True
return False
即使使用这个简单的子类,当我在编辑项目后点击return
时,它也会恢复。如果这是QAbstract*Model
,我会发出一个dataChanged
信号告诉模型/视图数据已经改变,但我认为这不适用于QListWigets。
我甚至尝试添加self.setText(value)
,但行为是一样的。
一旦我自己设置了其他项属性,我就可以回到基类:QtGui.QListWidgetItem.setData()
。但我的目标是自己对文本施加更多的控制,而不仅仅是对基类的支持。