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的主要内容,如果未能解决你的问题,请参考以下文章