QTableWidget 中的 InputMask
InputMask in QTableWidget
在第三列到第八列输入QTableWidget时,我只想允许整数和小数点后三位的小数。
尝试过各种事情:
self.vg.tablewidget.setValidator(QRegExpValidator(QRegExp("[0-9]*[.]{,1}[0-9]{,3}"))) or
self.vg.tableWidget.setItemDelegateForColumn(2, QRegularExpressionValidator(("[0-9]*[.]{,1}[0-9]{,3}"))).
很遗憾没有成功。
您必须创建一个 class 继承自 QStyledItemDelegate 或 QItemDelegate 并覆盖您在编辑器中设置 QValidator 的 createEditor 方法。
class StyledItemDelegate(QtWidgets.QStyledItemDelegate):
def createEditor(self, parent, option, index):
editor = super().createEditor(parent, option, index)
if isinstance(editor, QtWidgets.QLineEdit):
validator = QtGui.QRegExpValidator(
QtCore.QRegExp(r"[0-9]*[.]{,1}[0-9]{,3}"), editor
)
editor.setValidator(validator)
return editor
for i in range(3, 9):
delegate = StyledItemDelegate(self.vg.tableWidget)
self.vg.tableWidget.setItemDelegateForColumn(i, delegate)
在第三列到第八列输入QTableWidget时,我只想允许整数和小数点后三位的小数。 尝试过各种事情:
self.vg.tablewidget.setValidator(QRegExpValidator(QRegExp("[0-9]*[.]{,1}[0-9]{,3}"))) or
self.vg.tableWidget.setItemDelegateForColumn(2, QRegularExpressionValidator(("[0-9]*[.]{,1}[0-9]{,3}"))).
很遗憾没有成功。
您必须创建一个 class 继承自 QStyledItemDelegate 或 QItemDelegate 并覆盖您在编辑器中设置 QValidator 的 createEditor 方法。
class StyledItemDelegate(QtWidgets.QStyledItemDelegate):
def createEditor(self, parent, option, index):
editor = super().createEditor(parent, option, index)
if isinstance(editor, QtWidgets.QLineEdit):
validator = QtGui.QRegExpValidator(
QtCore.QRegExp(r"[0-9]*[.]{,1}[0-9]{,3}"), editor
)
editor.setValidator(validator)
return editor
for i in range(3, 9):
delegate = StyledItemDelegate(self.vg.tableWidget)
self.vg.tableWidget.setItemDelegateForColumn(i, delegate)