Как установить и обработать фильтр событий в 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 для родителя. Должны ли вы дать более подробную информацию