QLineEditオブジェクトでは、次のようにRegExpバリデーターを設定できます。
validator = QtGui.QRegExpValidator(QtCore.QRegExp("\d{11}"), lineedit)
lineedit.setValidator(validator)
QTableViewでセルを編集するときに、同様のバリデーターを設定するにはどうすればよいですか?
QLineEditオブジェクトでは、次のようにRegExpバリデーターを設定できます。
validator = QtGui.QRegExpValidator(QtCore.QRegExp("\d{11}"), lineedit)
lineedit.setValidator(validator)
QTableViewでセルを編集するときに、同様のバリデーターを設定するにはどうすればよいですか?
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())