我有一个带有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