Обнаружение события мыши в нескольких графических представлениях

У меня есть класс "SceneWindow", который наследует QGraphicsScene. У меня есть событие перемещения мыши, которое выдает текущее положение мыши по осям 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";
  }

Может кто-нибудь, пожалуйста, дайте решение этого?

Спасибо.


person Sid411    schedule 22.04.2014    source источник
comment
Что значит...но не помогает? Что вы хотите получить и что на самом деле получаете?   -  person vahancho    schedule 22.04.2014
comment
Я не получаю событие для графического представления, даже когда я навожу указатель мыши на графическое представление.   -  person Sid411    schedule 22.04.2014
comment
Может быть, стоит попробовать вместо этого установить фильтр событий в окне просмотра QGraphicsView?   -  person vahancho    schedule 22.04.2014
comment
Эй, большое спасибо. Это работает. Должен ли я поместить это в раздел ответов, или вы сделаете это. Спасибо за помощь. :)   -  person Sid411    schedule 22.04.2014


Ответы (1)


* Делаем ответ из комментария...

Проблема в том, что вы устанавливаете фильтр событий на QGraphicsView, однако события мыши обрабатываются скорее областью просмотра, чем самим представлением. Поэтому, чтобы ваш фильтр событий «ловил» события мыши, вам нужно установить его на область просмотра:

graphicsView->viewport()->installEventFilter(filter);
person vahancho    schedule 22.04.2014