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

     virtual void mousePressEvent(QMouseEvent* event);


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

最佳答案

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

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


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

10-02 11:23