Удалить значение в ячейке TableView в которой используется делегат, при этом чтобы поле ячейки осталось пустое

Как добиться того, чтобы при удалении значения в ячейке в которой используется делегат SpinBox, зафиксировать поле пустым.

По такому алгоритм:

-Двойной клик по ячейке -появляется значение SpinBox по умолчанию

-Нажимаю Del - удаляется значение, поле ячейки пустое

-Нажимаю Enter - ячейка должна остаться пустая.

Минимальный пример

import sys
from PyQt5.Qt import
from PyQt5 import QtWidgets, QtGui, QtCore
from PyQt5.QtWidgets import QStyledItemDelegate, QSpinBox
from PyQt5.QtCore import (Qt, QAbstractTableModel, QModelIndex) 

class Delegate(QStyledItemDelegate):
    signal_delegate = QtCore.pyqtSignal(int, int)  

    def createEditor(self, parent, options, index):
        editor = QSpinBox(parent)
        editor.valueChanged.connect(lambda val, row=index.row(): self.update_editor(val, row))  
        return editor

    def setEditorData(self, editor, index):
        try:
            value = index.model().data(index, Qt.EditRole)
            editor.setValue(int(value))
        except TypeError:
        pass

    def updateEditorGeometry(self, editor, options, index):
        editor.setGeometry(options.rect)

    def setModelData(self, editor, model, index):
        value = str(editor.value())
        model.setData(index, value, Qt.EditRole)

    def update_editor(self, val, row):  
        self.signal_delegate.emit(val, row)  


class MyDelegateInTableView(QtWidgets.QWidget):
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent)

        self.table = QtWidgets.QTableView()           
        self.sim = QtGui.QStandardItemModel(1,1) 
        self.table.setModel(self.sim)

        boxMain = QtWidgets.QVBoxLayout()
        boxMain.addWidget(self.table)
        self.setLayout(boxMain)

        delegate = Delegate(self)                                             
        self.table.setItemDelegateForColumn(0, delegate)

       
if __name__ == '__main__':
    app = QApplication(sys.argv)
    windowExample = MyDelegateInTableView()
    windowExample.show()
    sys.exit(app.exec_())
    

Ответы (0 шт):