我有一个带有 QGraphicsView 和 QGraphicsScene 的 Qt 应用程序。我将它们都分类为子类,并希望在两者中处理鼠标事件。我可以分别为两个类执行此操作,使用
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
关于c++ - 将事件传播到 QGraphicsView 和 QGraphicsScene,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9750884/