0
這個類是我當前的圖形視圖。其中,我出現在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
..那動作傳球,大幅整個變焦功能的變化。它不是放大鼠標光標的頂部,而是看起來好像沒有縮放錨點,而縮放目標則是跟隨某個完全其他的系統。
由於縮放功能對我的產品至關重要,因此我需要解決這個問題。任何幫助將不勝感激。
任何幫助將不勝感激! – RasmusJ
使用你的代碼我不能重複你的報告行爲,因爲它不是一個完整的例子。對我來說這似乎很好,儘管你可以在重寫方法的某個地方調用super()方法,只是爲了確保。 – Trilarion