У меня есть система 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)