我有一个带有QGraphicsView和QGraphicsScene的Qt应用程序。我将它们都分类,并希望在两者中处理mouseevents。我可以使用
分别为这两个类做这个 virtual void mousePressEvent(QMouseEvent* event);
但是当我处理GraphicsView中的事件时,我不再在GraphicsScene中收到它们了。我该如何解决这个问题,即将事件从grapchicsview传递给graphicsscene?
答案 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);
}