def createEditor(self, parent, option, index): if index.column() != 2: return None original_value = index.model().data(index, Qt.UserRole) if not self.is_supported_type(original_value): return None editor = None if isinstance(original_value, bool): editor = QCheckBox(parent) if isinstance(original_value, int): editor = QSpinBox(parent) editor.setRange(-32767, 32767) else: editor = QLineEdit(parent) editor.setFrame(False) validator = self._type_checker.create_validator(original_value, editor) if validator: editor.setValidator(validator) return editor