如何在PyQt / PySide中为QListWidgetItem重新实现setData?

时间:2015-03-19 02:46:07

标签: qt pyqt pyqt4 pyside

当我继承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()。但我的目标是自己对文本施加更多的控制,而不仅仅是对基类的支持。

0 个答案:

没有答案