def editorEvent(self, event, model, option, index): if event.type() == QEvent.MouseButtonRelease and index.column( ) == 0 and index.flags() & Qt.ItemIsUserCheckable: toggled = Qt.Checked if model.data( index, Qt.CheckStateRole) == QVariant( Qt.Unchecked) else Qt.Unchecked return model.setData(index, toggled, Qt.CheckStateRole) __event = QItemDelegate(self).editorEvent(event, model, option, index) animate_requested = False if event.type() == QEvent.MouseButtonRelease and self.animatable: if self.rowAnimator.row == index.row(): epos = event.pos() if self.rowAnimator.hoverLinkFilter.link_rect.contains( QPoint(epos.x(), epos.y() + 32)): url = QUrl(model.data(index, HomepageRole).toString()) QDesktopServices.openUrl(url) return __event elif self.rowAnimator.hoverLinkFilter.button_rect.contains( epos, True): self.showPackageDetails(model, index) return __event animate_requested = True elif event.type() == QEvent.KeyPress and self.animatable: # KeyCode 32 : Space key if event.key() == 32 and index.column( ) == index.model().columnCount() - 1: animate_requested = True if not unicode(model.data( index, DescriptionRole).toString()) == '' and animate_requested: self.rowAnimator.animate(index.row()) return __event
def init_validator(self): modes = ['vent', 'foot', 'bil', 'defrost', 'defog', 'trl', 'hil'] for i in modes: edit = self.RPM_tab.findChild(QLineEdit, i + '_edit') edit.setValidator(self.int_validator) edit.setMaxLength(4) value_delegate = QItemDelegate(self) value_delegate.createEditor = self.createEditor self.valve_table.setItemDelegateForColumn(1, value_delegate)
def editorEvent(self, event, model, option, index): #paket seçim olayında hata var seçim olayı gerçekleşiyor ama packageList sonraki seçimde görüyor #geçici çözümle giderildi tamamen çözülmeli if event.type() == QEvent.MouseButtonRelease and index.column( ) == 0 and index.flags() & Qt.ItemIsUserCheckable: toggled = Qt.Checked if model.data( index, Qt.CheckStateRole) == QVariant( Qt.Unchecked) else Qt.Unchecked self.packageSelected.emit(bool(toggled)) return model.setData(index, toggled, Qt.CheckStateRole) __event = QItemDelegate(self).editorEvent(event, model, option, index) animate_requested = False if event.type() == QEvent.MouseButtonRelease and self.animatable: if self.rowAnimator.row == index.row(): epos = event.pos() if self.rowAnimator.hoverLinkFilter.link_rect.contains( QPoint(epos.x(), epos.y() + 32)): url = QUrl(QVariant.value(model.data(index, HomepageRole))) QDesktopServices.openUrl(url) return __event elif self.rowAnimator.hoverLinkFilter.button_rect.contains( epos, True): self.showPackageDetails(model, index) return __event animate_requested = True elif event.type() == QEvent.KeyPress and self.animatable: # KeyCode 32 : Space key if event.key() == 32 and index.column( ) == index.model().columnCount() - 1: animate_requested = True if not QVariant.value(model.data( index, DescriptionRole)) == '' and animate_requested: self.rowAnimator.animate(index.row()) return __event
def __init__( self, model: QAbstractItemModel, signal_map: Optional[dict[type[QWidget], str]] = None, ) -> None: super().__init__() self._model = model self._mappings: list[tuple[QWidget, int]] = [] self._row_idx: Optional[int] = None self._item_delegate = QItemDelegate(self) self._ignoring = 0 self._signal_map: dict[type[QWidget], str] = { QCheckBox: "clicked", QSpinBox: "valueChanged", QDoubleSpinBox: "valueChanged", QComboBox: "currentTextChanged", ColorPicker: "changed", TimeEdit: "value_changed", } if signal_map: self._signal_map.update(signal_map) model.dataChanged.connect(self._model_data_change)