通过多个图形视图检测鼠标事件

时间:2014-04-22 05:43:35

标签: qt qgraphicsview qgraphicsscene

我有一个继承QGraphicsScene的类“SceneWindow”。我有一个鼠标移动事件,它会在场景中发出鼠标的当前x和y位置。

在我的主窗口类中,我有四个用于显示不同图像的图形视图。我在视图上创建了同一个graphicsscene类的四个对象。我想检测我的鼠标当前是哪个图形视图。 我该怎么做? 我尝试在主类中使用事件过滤器来检测视图,但它没有帮助。我通过以下方式尝试了它:

bool MainWindow::eventFilter(QObject *f_object, QEvent *f_event)
{
  if(f_object == graphicsView && f_event->type() == QEvent::MouseMove)
  {
     qDebug() << "I am in Scene 1";
  }

有人可以给出解决方案吗?

谢谢。

1 个答案:

答案 0 :(得分:2)

*通过评论做出答案......

问题是您在QGraphicsView上安装了事件过滤器,但鼠标事件由视口处理而不是视图本身。因此,要使事件过滤器“捕获”您需要在视口上安装它的鼠标事件:

graphicsView->viewport()->installEventFilter(filter);