我在pyqt4
中使用python3.4
工作,我想验证单元格中的文本在引入时是否为浮点数。我该怎么做?
最佳答案
您有两个选择。
您可以创建一个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)