def keyPressEvent(self, e: QtCore.QEvent): if e.key() == 16777223: # delete if len(self.text()): self.last_text = self.text() self.setText("") elif e.key() == 90 and e.modifiers( ) == QtCore.Qt.ControlModifier: # ctrl+z if self.last_text: self.setText(self.last_text) self.last_text = None else: e.ignore()
def keyPressEvent(self, event: QtCore.QEvent): if event.key() == 90 and event.modifiers( ) == QtCore.Qt.ControlModifier: if self.deleted_domain: domain = self.deleted_domain self.addDomain( domain[1], domain[0], domain[2] ) # addDomain(name, id_) / domain = (id_, name, indexAt) if hasattr(self.parent.window, "config"): self.parent.window.config.write("peers", (domain[2], (domain[0], domain[1]))) self.deleted_domain = None else: event.ignore()
def keyPressEvent(self, event: QtCore.QEvent): if event.key() == 90 and event.modifiers( ) == QtCore.Qt.ControlModifier: if self.deleted_peer: peer = self.deleted_peer self.addPeer( peer[1], peer[0], peer[2] ) # addPeer(name, id_) / peer = (id_, name, indexAt) if hasattr(self.parent.window, "config"): self.parent.window.config.write("peers", (peer[2], (peer[0], peer[1]))) self.deleted_peer = None else: event.ignore()
def eventFilter(self, object: object, event: QEvent) -> bool: """ """ # print(f"debug: QDebug[{type(self).__name__}].eventFilter: " # f"event={type(event)}, object={type(object)}, " # f"type={event.type()}") if event.type() == QEvent.MouseButtonPress: # event is of type QMouseEvent modifiers = event.modifiers() if modifiers & Qt.ControlModifier: button = event.button() print(f"debug: QDebug[{type(self).__name__}].eventFilter: " f"object={type(object).__name__}, button={button}, " f"shift={bool(modifiers & Qt.ShiftModifier)}, " f"control={bool(modifiers & Qt.ControlModifier)}" f"alt={bool(modifiers & Qt.AltModifier)}") self.debug() return False
def eventFilter(self, source: QWidget, event: QEvent): """Quotes editor content for <Ctrl>+<Enter> and <Ctrl>+<Return> Overrides SpellTextEdit default shortcut. Counts as undoable action. :param source: Source widget of event :param event: Event to be filtered """ if event.type() == QEvent.ShortcutOverride \ and event.modifiers() == Qt.ControlModifier \ and source == self \ and event.key() in (Qt.Key_Return, Qt.Key_Enter): code = quote(source.toPlainText()) index = self.main_window.grid.currentIndex() description = "Quote code for cell {}".format(index) cmd = commands.SetCellCode(code, self.main_window.grid.model, index, description) self.main_window.undo_stack.push(cmd) return QWidget.eventFilter(self, source, event)
def keyPressEvent(self, event: QtCore.QEvent): if event.key() == 90 and event.modifiers( ) == QtCore.Qt.ControlModifier: self.domain_list.keyPressEvent(event) else: super().keyPressEvent(event)
def event(self, e: QEvent): if e.type() == QEvent.KeyPress: if e.modifiers() == Qt.ControlModifier: return False return super(ListView, self).event(e)
def eventFilter(self, obj: QObject, event: QEvent) -> bool: if isinstance(event, QKeyEvent): key = QKeySequence(int(event.modifiers()) | event.key()).toString().lower() if action := self._strShortcutToAction.get(key): action.trigger()
def eventFilter( self, source: QWidget, ev: QEvent, ) -> None: ''' Qt global event filter: return `False` to pass through and `True` to filter event out. https://doc.qt.io/qt-5/qobject.html#eventFilter https://doc.qt.io/qtforpython/overviews/eventsandfilters.html#event-filters ''' etype = ev.type() # TODO: turn this on and see what we can filter by default (such # as mouseWheelEvent). # print(f'ev: {ev}') if etype not in self._event_types: return False # XXX: we unpack here because apparently doing it # after pop from the mem chan isn't showing the same # event object? no clue wtf is going on there, likely # something to do with Qt internals and calling the # parent handler? if etype in {QEvent.KeyPress, QEvent.KeyRelease}: msg = KeyboardMsg( event=ev, etype=etype, key=ev.key(), mods=ev.modifiers(), txt=ev.text(), ) # TODO: is there a global setting for this? if ev.isAutoRepeat() and self._filter_auto_repeats: ev.ignore() # filter out this event and stop it's processing # https://doc.qt.io/qt-5/qobject.html#installEventFilter return True # NOTE: the event object instance coming out # the other side is mutated since Qt resumes event # processing **before** running a ``trio`` guest mode # tick, thus special handling or copying must be done. elif etype in MOUSE_EVENTS: # print('f mouse event: {ev}') msg = MouseMsg( event=ev, etype=etype, button=ev.button(), ) else: msg = ev # send event-msg to async handler self._send_chan.send_nowait(msg) # **do not** filter out this event # and instead forward to the source widget # https://doc.qt.io/qt-5/qobject.html#installEventFilter return False