将事件传播到QGraphicsView和QGraphicsScene

时间:2012-03-17 14:46:07

标签: c++ qt events

我有一个带有QGraphicsView和QGraphicsScene的Qt应用程序。我将它们都分类,并希望在两者中处理mouseevents。我可以使用

分别为这两个类做这个
     virtual void mousePressEvent(QMouseEvent* event);

但是当我处理GraphicsView中的事件时,我不再在GraphicsScene中收到它们了。我该如何解决这个问题,即将事件从grapchicsview传递给graphicsscene?

2 个答案:

答案 0 :(得分:4)

只需将mousePressEvent转发给GraphicsView的父母,然后调用场景mousePressEvent

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

顺便说一句,QGraphicsScene::mousePressEvent有不同类型的事件:QGraphicsSceneMouseEvent

答案 1 :(得分:1)

在覆盖函数结束时调用基础实现,例如:

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