QTableWidget 中的 InputMask

Posted

技术标签:

【中文标题】QTableWidget 中的 InputMask【英文标题】:InputMask in QTableWidget 【发布时间】: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"))).

很遗憾没有成功。

【问题讨论】:

【参考方案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)

【讨论】:

以上是关于QTableWidget 中的 InputMask的主要内容,如果未能解决你的问题,请参考以下文章

导入 jquery.inputmask 的正确方法是啥?

RobinHerbots jquery.inputmask 日期范围

QTableWidget 中的自定义排序

jquery-inputmask 事件触发未完成

JQuery Inputmask 不显示分隔符

范围 0-100 使用 jQuery inputmask 插件