如何验证 QTableWidget 中的单元格?
How validate a cell in QTableWidget?
我在 python3.4
中使用 pyqt4
我想在引入时验证单元格中的文本是否为浮点数。我该怎么做?
你有两个选择。
您可以创建 QItemDelegate
并覆盖 createEditor
、setEditorData
和 setModelData
来控制显示的小部件以编辑数据。如果你愿意,你可以创建一个带有验证器的 QLineEdit
,但如果他们只能输入一个数字,你应该只使用 QSpinBox
或 QDoubleSpinBox
,它们只允许整数和浮动。或者,您可以让他们输入他们想要的任何内容,然后在 setModelData
函数中忽略任何输入的无效数字值。
class MyDelegate(QtGui.QItemDelegate):
def createEditor(self, parent, option, index):
return QtGui.QSpinBox(parent)
delegate = MyDelegate()
table.setItemDelegate(delegate)
或者,如果您的 table 中的项目已经有数字,则稍微简单一些的解决方案是为该项目的 EditData
角色分配一个整数或浮点数。 Qt
会注意到 class 类型并自动为您构造一个 QSpinBox
或 QDoubleSpinBox
。
item = QTableWidgetItem()
item.setData(QtCore.Qt.EditRole, 5)
我在 python3.4
中使用 pyqt4
我想在引入时验证单元格中的文本是否为浮点数。我该怎么做?
你有两个选择。
您可以创建 QItemDelegate
并覆盖 createEditor
、setEditorData
和 setModelData
来控制显示的小部件以编辑数据。如果你愿意,你可以创建一个带有验证器的 QLineEdit
,但如果他们只能输入一个数字,你应该只使用 QSpinBox
或 QDoubleSpinBox
,它们只允许整数和浮动。或者,您可以让他们输入他们想要的任何内容,然后在 setModelData
函数中忽略任何输入的无效数字值。
class MyDelegate(QtGui.QItemDelegate):
def createEditor(self, parent, option, index):
return QtGui.QSpinBox(parent)
delegate = MyDelegate()
table.setItemDelegate(delegate)
或者,如果您的 table 中的项目已经有数字,则稍微简单一些的解决方案是为该项目的 EditData
角色分配一个整数或浮点数。 Qt
会注意到 class 类型并自动为您构造一个 QSpinBox
或 QDoubleSpinBox
。
item = QTableWidgetItem()
item.setData(QtCore.Qt.EditRole, 5)