Как установить и обработать фильтр событий в Qt graphicsview

У меня есть graphicsview и graphicsscen, но я не знаю, как установить и обработать фильтр событий для получения событий клавиатуры. Кто-нибудь может мне помочь с этим?

Заранее спасибо.

2 ответа

У вас есть два варианта сделать это:

1) Создайте свой собственный класс на основе QGraphicsView и переопределите keyPressEvent(). Это имеет смысл, только если вы собираетесь изменить много других вещей.

2) Установите фильтр событий, используя метод installEventFilter(..) и передайте туда объект фильтра, который получит все, что вам может понадобиться

Если вы создали собственный класс QGraphicsScene, вы можете просто переопределить методы QWidget "QWidget::keyPressEvent()" и "QWidget::keyReleaseEvent()".

class MyGraphicsScene : QGraphicsScene
{
    void keyPressEvent(QKeyEvent *event);
}

//in cpp
void MyGraphicsScene::keyPressEvent(QKeyEvent *event)
{
    // do sth with event
}

Если вы просто используете istance QGraphicsScene, вы можете использовать keyPressEvent для родителя. Должны ли вы дать более подробную информацию

Другие вопросы по тегам