def eventFilter(self, object: QObject, event: QEvent): if event.type() == QEvent.MouseButtonPress: pass # 1. 如果主窗口被激活, 关闭子窗口 if event.type() == QEvent.WindowActivate: if not self.add_music_list_dialog.isHidden(): self.add_music_list_dialog.hide() # 2. 如果左下缩放按钮被鼠标左键拖动, 则缩放窗口 if object == self.btn_zoom and event.type( ) == QEvent.MouseMove and event.buttons() == Qt.LeftButton: global_x = event.globalX() global_y = event.globalY() window_global_x = self.x() window_global_y = self.y() width = global_x - window_global_x heigth = global_y - window_global_y self.setGeometry(window_global_x, window_global_y, width, heigth) if object == self.header and type( event) == QMouseEvent and event.buttons() == Qt.LeftButton: # 如果标题栏被双击 if event.type() == QEvent.MouseButtonDblClick: self.show_maximized_normal() # 记录拖动标题栏的位置 elif event.type() == QEvent.MouseButtonPress: self.point = event.globalPos() - self.frameGeometry().topLeft() # 如果标题栏被拖动 elif event.type() == QEvent.MouseMove: # print(self.frameGeometry().y()) # if self.frameGeometry().y() <= 0: # self.show_maximized_normal() if self.windowState() == Qt.WindowNoState: self.move(event.globalPos() - self.point) # 3. 当鼠标移动到music_image时显示遮罩层 if object == self.btn_music_image: if event.type() == QEvent.Enter: self.music_image_label.setGeometry( self.btn_music_image.geometry()) self.music_image_label.show() if object == self.music_image_label: if event.type() == QEvent.Leave: self.music_image_label.hide() if event.type() == QEvent.MouseButtonPress: self.change_to_play_page() # 4. if object == self.label_lyric: if event.type() == QEvent.Wheel: self.is_wheeling = True else: self.is_wheeling = False # print("eventfilter: " + str(self.is_wheeling)) return super().eventFilter(object, event)
def eventFilter(self, obj: QObject, event: QEvent): if event.type() == QEvent.MouseButtonPress: if not self.playlistDialog.isHidden(): self.playlistDialog.hide() # 1. 如果主窗口被激活, 关闭子窗口 if event.type() == QEvent.WindowActivate: if not self.playlistDialog.isHidden(): self.playlistDialog.hide() # 2. 如果左下缩放按钮被鼠标左键拖动, 则缩放窗口 if obj == self.btn_zoom and event.type( ) == QEvent.MouseMove and event.buttons() == Qt.LeftButton: width = event.globalX() - self.x() height = event.globalY() - self.y() self.setGeometry(self.x(), self.y(), width, height) if obj == self.header and type( event) == QMouseEvent and event.buttons() == Qt.LeftButton: # 如果标题栏被双击 if event.type() == QEvent.MouseButtonDblClick: self.showMaximizedNormal() # 记录拖动标题栏的位置 elif event.type() == QEvent.MouseButtonPress: self.point = event.globalPos() - self.frameGeometry().topLeft() # 如果标题栏被拖动 elif event.type() == QEvent.MouseMove: if self.windowState() == Qt.WindowNoState: self.move(event.globalPos() - self.point) # 3. 当鼠标移动到music_image时显示遮罩层 if obj == self.btn_music_image: if event.type() == QEvent.Enter: self.music_image_label.setGeometry( self.btn_music_image.geometry()) self.music_image_label.show() if obj == self.music_image_label: if event.type() == QEvent.Leave: self.music_image_label.hide() if event.type() == QEvent.MouseButtonPress: self.change2playPage() # 4. if obj == self.label_lyric: if event.type() == QEvent.Wheel: self.is_wheeling = True else: self.is_wheeling = False return super().eventFilter(obj, event)
def eventFilter(self, source: QObject, event: QEvent) -> bool: if event.type() != QEvent.ContextMenu or (source is not self.bookmarksTable and source is not self.notesTable) \ or (self.bookmarksTable.currentIndex().row() < 0 and self.notesTable.currentIndex().row() < 0): return super().eventFilter(source, event) index = source.currentIndex().row() source.selectRow(index) if not self.contextMenu.exec_(event.globalPos()): source.setCurrentIndex(QModelIndex()) return True
def event(self, event: QEvent) -> bool: if event.type() == QEvent.ToolTip: tt = self.isValidIndex(self._hoverIndex) and self.tabToolTip( self._hoverIndex) if tt: QToolTip.showText(event.globalPos(), tt, self, self._hoverRect) else: QToolTip.hideText() event.ignore() return True return super().event(event)
def eventFilter(self, source: QObject, event: QEvent) -> bool: if event.type() == QEvent.KeyPress and source is self.searchBar: if event.key() == Qt.Key_Enter - 1: self.search_in_table() return True if event.type( ) == QEvent.ContextMenu and source is self.table and self.table.currentIndex( ).row() >= 0: index = self.table.currentIndex().row() self.table.selectRow(index) if not self.context_table_menu.exec_(event.globalPos()): self.table.setCurrentIndex(QModelIndex()) return True return super().eventFilter(source, event)
def eventFilter(self, obj: QObject, event: QEvent) -> None: if self.currentlySelectingNewOrigin: et = event.type() if et == QEvent.MouseMove: np = self.rasterSurface.mapFromGlobal(event.globalPos()) self.originPoint.x, self.originPoint.y = \ np.x(), \ self.rasterSurface.height() - np.y() self.rasterSurface.repaint() elif et == QEvent.MouseButtonRelease: self.endSelectNewOriginPoint() elif et == QEvent.KeyRelease: key = event.key() if key == Qt.Key_Escape: self.endSelectNewOriginPoint(False) return False
def eventFilter(self, obj: QObject, event: QEvent) -> None: if obj is not self.rasterSurface or self._editingPolygon is None: return False et = event.type() if et == QEvent.MouseMove: self._cursorPos = self.rasterSurface.mapFromGlobal( event.globalPos() ) if self._editingPolygon is not None: if self._highlightedPoint is not None and \ self._highlightedPointActive: self._highlightedPoint.x, self._highlightedPoint.y = \ self._cursorPos.x(), \ self.rasterSurface.height() - self._cursorPos.y() self._editingPolygon.update_cache() self.rasterSurface.repaint() elif self._editingPolygon is not None: if et == QEvent.MouseButtonPress: np = self._cursorPos if self.rasterSurface.geometry().contains(np): x = np.x() y = np.y() height = self.rasterSurface.height() for p in self._editingPolygon.points: if abs(x - p.x) <= 5 and abs(y - height + p.y) <= 5: self._highlightedPoint = p self._highlightedPointActive = True self.rasterSurface.repaint() break elif et == QEvent.MouseButtonRelease: # self._highlightedPoint = None self._highlightedPointActive = False self.rasterSurface.repaint() elif et == QEvent.KeyRelease: key = event.key() if key == Qt.Key_Return or key == Qt.Key_Enter: self.endEditing(True) elif key == Qt.Key_Escape: self.endEditing(False) return False
def eventFilter(self, obj: QObject, event: QEvent) -> None: if obj is not self.rasterSurface: return False et = event.type() if et == QEvent.MouseMove: self._cursorPos = self.rasterSurface.mapFromGlobal( event.globalPos()) if self._editingPolygon is not None: self.rasterSurface.repaint() elif self._editingPolygon is not None: if et == QEvent.MouseButtonPress: pass elif et == QEvent.MouseButtonRelease: np = self._cursorPos if self.rasterSurface.geometry().contains(np): x = np.x() y = np.y() if self._editingPolygon.length <= 0: self._firstPolygonPoint = np elif abs(x - self._firstPolygonPoint.x()) <= 5 and \ abs(y - self._firstPolygonPoint.y()) < 5: self.endEditing() # the last point == first point return False self._editingPolygon.add_point( x, self.rasterSurface.height() - y) elif et == QEvent.KeyRelease: key = event.key() if key == Qt.Key_Return or key == Qt.Key_Enter: self.endEditing(self._editingPolygon.length >= 3) elif key == Qt.Key_Escape: self.endEditing(False) return False