这个类是我当前的图形视图。在其中,我出现在graphicsscene。此图形视图由缩放功能缩放(您可以在下面看到)。
from PySide import QtCore, QtGui
ZOOM_FACTOR = 2
MAX_ALLOWED_ZOOM = 4
class MapGraphicsView(QtGui.QGraphicsView):
def __init__(self, parent):
QtGui.QGraphicsView.__init__(self, parent)
self.resize(parent.size().width(), parent.size().height())
self.setAlignment(33)
self.setTransformationAnchor(QtGui.QGraphicsView.AnchorUnderMouse)
self.setResizeAnchor(QtGui.QGraphicsView.AnchorUnderMouse)
self.setFrameShape(QtGui.QFrame.NoFrame)
self.max_allowed_zoom = MAX_ALLOWED_ZOOM
# Signal variables used to notify listeners. Listeners are connected in actions.py
pressed = QtCore.Signal(QtCore.QEvent)
released = QtCore.Signal(QtCore.QEvent)
moved = QtCore.Signal(QtCore.QEvent)
# Notify listeners when window is clicked
def mousePressEvent(self, event):
self.pressed.emit(event)
def mouseReleaseEvent(self, event):
self.released.emit(event)
def mouseMoveEvent(self, event):
#self.moved.emit(event)
pass
def zoom_in(self):
self.scale(ZOOM_FACTOR, ZOOM_FACTOR)
def zoom_out(self):
self.scale(1/ZOOM_FACTOR, 1/ZOOM_FACTOR)
真的,一切都很美妙。好吧,如果我删除了mouseMoveEvent,它可以在下面的代码中看到。如果我删除了该事件,一切都完全符合预期:缩放是完美的,它位于光标顶部的正中。
如果我将mouseMoveEvent留在其中,即使它只执行一个动作..
def mouseMoveEvent(self, event):
#self.moved.emit(event)
pass
..并且该动作通过,整个缩放功能发生了巨大变化。它不是放在鼠标光标的顶部,而是看起来好像没有缩放锚点,而缩放目标则取代了一些完全不同的系统。
由于缩放功能在我的产品中至关重要,我需要解决这个问题。任何帮助将不胜感激。
答案 0 :(得分:0)
在处理事件之前先调用super:
<div value="GO" id="go-div" class="bubble">
<input type="submit" value="GO" id="go-button" style=" position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;" data-target="#search-results-page">
</div>
它确实对我有用。如果重新实现的方法需要它,请不要忘记自己。