3

QLineEditオブジェクトでは、次のようにRegExpバリデーターを設定できます。

validator = QtGui.QRegExpValidator(QtCore.QRegExp("\d{11}"), lineedit)
lineedit.setValidator(validator)

QTableViewでセルを編集するときに、同様のバリデーターを設定するにはどうすればよいですか?

4

1 に答える 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())
于 2012-11-19T08:21:41.507 に答える