QGraphicsScene смещается при наведении на подкласс QGraphicsEllipseItem - PullRequest
0 голосов
/ 08 декабря 2018

У меня есть система QGraphicsScene / QGraphicsView с несколькими нарисованными кругами (в подклассах QGraphicsEllipseItem).Когда мышь наводит курсор на (некоторые из) кругов, вся сцена смещается.Направление сдвига, по-видимому, согласуется с квадрантом, в котором находятся круги.

Вот изображение этой проблемы. А вот объект подкласса QGraphicsEllipseItem, позицияэллипса (kx и ky) - это число с плавающей точкой примерно от -2 до 2. Если я закомментирую строку self.setPen(self.hoverpen), то смещения нет.

class QHklCircleItem(QGraphicsEllipseItem):
    def __init__(self, kx, ky, radius, facecolor=(0, 0, 0, 1), edgecolor=(0, 0, 0, 0), hoverpen=(1, 0, 0, 1),
             linewidth=0):
        super().__init__()
        self.radius = radius
        self.facecolor = QBrush(QColor.fromRgbF(*facecolor))

        self.hoverpen = QPen(QColor.fromRgbF(*hoverpen))
        self.hoverpen.setWidth(2)
        self.hoverpen.setCosmetic(True)

        self.edgecolor = QPen(QColor.fromRgbF(*edgecolor))
        self.edgecolor.setWidth(linewidth)
        self.edgecolor.setCosmetic(True)
        self.setAcceptHoverEvents(True)
        self.setPos(kx, ky)

        self.setRect(radius, radius, radius, radius)
        self.setPen(self.edgecolor)
        self.setBrush(self.facecolor)

    def hoverEnterEvent(self, event):
        super().hoverEnterEvent(event)
        self.setPen(self.hoverpen)

    def hoverLeaveEvent(self, event):
        super().hoverLeaveEvent(event)
        self.setPen(self.edgecolor)
...