当在第三至第八列中输入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}"))).
不幸的是没有成功。
您必须创建一个从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)