How validate a cell in QTableWidget?

跟風遠走 提交于 2019-12-29 08:11:39

问题


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?


回答1:


You have two options.

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)

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)


来源:https://stackoverflow.com/questions/37621753/how-validate-a-cell-in-qtablewidget

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!