如何验证 QTableWidget 中的单元格?
Posted
技术标签:
【中文标题】如何验证 QTableWidget 中的单元格?【英文标题】:How validate a cell in QTableWidget? 【发布时间】:2016-06-03 19:06:29 【问题描述】:我在pyqt4
中工作python3.4
我想验证单元格中的文本在引入时是否为浮点数。我该怎么做?
【问题讨论】:
添加验证器可以强制用户输入数字:pyqt.sourceforge.net/Docs/PyQt4/qdoublevalidator.html 如果输入不是数字,则不会接受单元格的输入。 【参考方案1】:你有两个选择。
您可以创建一个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)
【讨论】:
我尝试使用QItemDelegate
并且可以工作但是我需要一个浮点数并且只能让我使用整数
如果你想使用浮点数,请使用QDoubleSpinBox
非常感谢。你能告诉我在哪里可以找到关于 QItemDelegate 的文档吗?就是我不喜欢写你不懂的代码
只要谷歌“pyqt qiitemdelegate”——pyqt.sourceforge.net/Docs/PyQt4/qitemdelegate.html
对于非委托路径:如果我们将 EditRole 设置为 int,那么我们应该如何将项目的文本设置为显示?使用item.setText(str(value))
使项目在编辑时接受任何内容,并且不显示任何特殊小部件。以上是关于如何验证 QTableWidget 中的单元格?的主要内容,如果未能解决你的问题,请参考以下文章