Распространение событий на QGraphicsView и QGraphicsScene - PullRequest
0 голосов
/ 17 марта 2012

У меня есть приложение Qt с QGraphicsView и QGraphicsScene.Я разделил их на подклассы и хочу справиться с событиями мыши в обоих.Я могу сделать это для обоих классов отдельно, используя

     virtual void mousePressEvent(QMouseEvent* event);

Но когда я обрабатываю события в GraphicsView, я больше не получаю их в GraphicsScene.Как мне это исправить, то есть передать событие из графика в графическую сцену?

Ответы [ 2 ]

4 голосов
/ 17 марта 2012

Просто перешлите mousePressEvent к родительскому элементу GraphicsView, после этого вызовется сцена mousePressEvent:

void MyGraphicsView::mousePressEvent(QMouseEvent * e)
{
    // forward to scene (via default view behaviour)
    QGraphicsView::mousePressEvent(e) ;
    // ...
}

Кстати, QGraphicsScene::mousePressEvent имеет другой вид (класс) события: QGraphicsSceneMouseEvent

1 голос
/ 17 марта 2012

Вызовите базовую реализацию в конце вашей переопределенной функции, например:

void MyView::mousePressEvent(QMouseEvent* event)
{
   // do something
   QGraphicsView::mousePressEvent(event);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...