Beispiel #1
0
    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)
Beispiel #2
0
    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
Beispiel #4
0
 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)
Beispiel #5
0
 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)
Beispiel #6
0
 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
Beispiel #7
0
    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