Ejemplo n.º 1
0
    def eventFilter(self, widget, event):
        if widget is self.viewport():
            if QEvent is None:
                return QTreeView.eventFilter(self, widget, event)
            elif event.type() == QEvent.MouseMove:
                index = self.indexAt(event.pos())
                if not index.isValid():
                    index = None
            elif event.type() == QEvent.Leave:
                index = None
                self.hoverExitAll.emit()
            else:
                index = self._last_hovered_item

            if index != self._last_hovered_item:
                if self._last_hovered_item is not None:
                    try:
                        # self.hoverExitIndex.emit(self._last_hovered_item)
                        self.hover_exit(self._last_hovered_item)
                    except IndexError:
                        log.warning("Hover row index %s out of range",
                                    self._last_hovered_item)

                if index is not None:
                    try:
                        self.hover_enter(index)
                        # self.hoverEnterIndex.emit(index)
                    except IndexError:
                        log.warning("Hover row index %s out of range",
                                    index.row()),
                self._last_hovered_item = index

        return QTreeView.eventFilter(self, widget, event)