QTableWidget中的InputMask

问题描述 投票:0回答:1

当在第三至第八列中输入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}"))).

不幸的是没有成功。

python pyqt pyqt5
1个回答
0
投票

您必须创建一个从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)
© www.soinside.com 2019 - 2024. All rights reserved.