问题描述
我在 python3.4
中工作 eith pyqt4
我想验证单元格中的文本在引入时是否为浮点数.我该怎么做?
I work eith pyqt4
in python3.4
I want to validate if the text in the cell is a float number when it is introduced. How I do that?
推荐答案
您有两个选择.
您可以创建一个 QItemDelegate
并覆盖 createEditor
、setEditorData
和 setModelData
来控制它们的小部件重新提交以编辑数据.如果您愿意,您可以使用验证器创建 QLineEdit
,但如果它们只能输入一个数字,您可能应该只使用 QSpinBox
或 QDoubleSpinBox
,只允许整数和浮点数.或者,您可以让他们输入他们想要的任何内容,然后在 setModelData
函数中忽略任何输入的不是有效数字的值.
You can create a QItemDelegate
and override the createEditor
, setEditorData
and setModelData
to control the widget they're presented with to edit the data. You can create a QLineEdit
with a validator if you'd like, but if they can only enter a number, you should probably just use a QSpinBox
or QDoubleSpinBox
, which only allow integers and floats. Alternatively, you could let them enter whatever they want and then in the setModelData
function just ignore any entered values that aren't valid numbers.
class MyDelegate(QtGui.QItemDelegate):
def createEditor(self, parent, option, index):
return QtGui.QSpinBox(parent)
delegate = MyDelegate()
table.setItemDelegate(delegate)
或者,如果您的表中的项目已经有数字,那么稍微简单一点的解决方案,只需为该项目的 EditData
角色分配一个整数或浮点数.Qt
会注意到类的类型并自动为你构造一个 QSpinBox
或 QDoubleSpinBox
.
Or, a slightly easier solution if the items in your table already have numbers, just assign an integer or float to the EditData
role for the item. Qt
will notice the class type and automatically construct a QSpinBox
or QDoubleSpinBox
for you.
item = QTableWidgetItem()
item.setData(QtCore.Qt.EditRole, 5)
这篇关于如何验证 QTableWidget 中的单元格?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!