2016-04-28 16 views
0

このクラスは現在のgraphicsviewです。その中で、私はgraphicssceneに出席する。このグラフィックスビューはズーム機能によってスケーリングされます(下記参照)。PyQTズームがmouseMoveEvent()によって中断されました。なぜですか?

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

ご協力いただければ幸いです! – RasmusJ

+0

コードを使用すると、完全な例ではないため、報告された動作を繰り返すことはできません。あなたがsuper()メソッドをオーバーライドされたメソッドのどこかで呼び出すことはできますが、確かに私にはうれしいようです。 – Trilarion

答えて

0

だけでイベントを処理する前に、スーパー呼び出す:

def mouseMoveEvent(self, event): 
    super().mouseMoveEvent(event) 
    # your code goes here 

それは私のために仕事をしました。再実装されたメソッドがそれを必要とするかどうか疑問を忘れないでください。

関連する問題