我正在製作一個接口來比較將要完成一些處理的圖像。具體來說,第一個應該是一個彩色圖像,第二個灰度,第三個應用邊緣濾波器,可能更多。能夠縮放和拖動這些圖像中的任何一個並使其他圖像以相同的方式進行比較來進行比較會很好。如何使多個QGraphicsView在其中任何一個執行動作時拖動/移動圖像
現在我有三對QGraphicsScene和QGraphicsView,它們中的每一對都包含適當圖像,顏色或灰度等的QPixmap。我設法通過將事件過濾器附加到所有QGraphicsView並捕捉鼠標滾輪滾動事件並將其分發給所有其他人。然而,這並不像圖像拖動那樣容易,因爲它由多個事件組成。
它感覺非常「黑」在一起,我想知道是否有更好的方法來實現這一目標。這是事件過濾器目前我有,不用於拖動工作的代碼:
def eventFilter(self, obj, event):
if obj == self.viewA.viewport() or obj == self.viewB.viewport() or obj == self.viewC.viewport():
if event.type() == QtCore.QEvent.Wheel:
# This function passes the event to all the QGraphicsView's
self.wheelEvent(event)
return True
elif event.type() == QtCore.QEvent.MouseMove:
# This doesn't work but just to give an idea of what I'm trying to achieve
self.viewA.mouseMoveEvent(event)
self.viewB.mouseMoveEvent(event)
self.viewC.mouseMoveEvent(event)
return True
return False
謝謝,將MouseMove,MouseButtonPress和MouseButtonRelease事件轉發給所有圖形視圖都會有訣竅。一個布爾不是必須的。我也檢查了拖動事件,但他們不在圖形視圖中觸發。 – Rubenknex 2014-09-25 09:08:28