【问题标题】:InputMask in QTableWidgetQTableWidget 中的 InputMask
【发布时间】:2019-12-30 20:21:17
【问题描述】:

在第三列到第八列输入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 qtablewidget


    【解决方案1】:

    您必须创建一个继承自 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-07
      • 1970-01-01
      相关资源
      最近更新 更多