我在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)
或者,如果表中的项目已经有数字,则稍微简单的解决方案是,只需为项目的EditData
角色分配一个整数或浮点数即可。 Qt
会注意到类类型并自动为您构建QSpinBox
或QDoubleSpinBox
。
item = QTableWidgetItem()
item.setData(QtCore.Qt.EditRole, 5)