2012-03-17 81 views
0

我有一個QGraphicsView和QGraphicsScene的Qt應用程序。我將它們分類,並希望在兩者中處理mouseevents。我可以分開兩個類做到這一點,利用將事件傳播到QGraphicsView和QGraphicsScene

 virtual void mousePressEvent(QMouseEvent* event); 

但是,當我處理的GraphicsView的事件,我再也不會在GraphicsScene接受他們。我該如何解決這個問題,即將事件從grapchicsview傳遞到graphicsscene?

回答

3

只是向前mousePressEventGraphicsView的母公司,這將然後調用場景的mousePressEvent

void MyGraphicsView::mousePressEvent(QMouseEvent * e) 
{ 
    // forward to scene (via default view behaviour) 
    QGraphicsView::mousePressEvent(e) ; 
    // ... 
} 

BTW,QGraphicsScene::mousePressEvent有不同的事件的種類(類):QGraphicsSceneMouseEvent

+0

感謝這就是我一直在尋找:) – user1254962 2012-03-17 20:29:44

+2

好,那麼你可以把這個問題標記爲已解決 – azf 2012-03-18 10:05:02

1

調用基實現在你被覆蓋的函數結束,如:

void MyView::mousePressEvent(QMouseEvent* event) 
{ 
    // do something 
    QGraphicsView::mousePressEvent(event); 
}