2012-03-17 75 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); 
}