Pyside,PyQt4:如何在编辑QTableView中的单元格时设置验证器

3
在QLineEdit对象中,我可以像这样设置一个RegExp验证器:
validator = QtGui.QRegExpValidator(QtCore.QRegExp("\d{11}"), lineedit)
lineedit.setValidator(validator)

当我在QTableView上编辑单元格时,如何设置类似的验证器?
1个回答

5
通过子类化 QStyledItemDelegate 并重新实现 createEditor 方法:
class ValidatedItemDelegate(QtGui.QStyledItemDelegate):
    def createEditor(self, widget, option, index):
        if not index.isValid():
            return 0
        if index.column() == 0: #only on the cells in the first column
            editor = QtGui.QLineEdit(widget)
            validator = QtGui.QRegExpValidator(QtCore.QRegExp("\d{11}"), editor)
            editor.setValidator(validator)
            return editor
        return super(ValidatedItemDelegate, self).createEditor(widget, option, index)

然后您可以像这样设置验证器:

tableview.setItemDelegate(ValidatedItemDelegate())

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接