#qt
#qt
Вопрос:
Я использую QMouseEvent
и QKeyEvents
в своей программе. Я программно создаю различные виджеты ( QDockWidgets
и QCustomPlots
).
Я хотел бы использовать функцию обработки одного щелчка и нажатия клавиш. Тем не менее, я изо всех сил пытаюсь получить виджет, на который на самом деле нажимают, чтобы я мог выполнять определенные действия в этом виджете.
Есть ли способ вернуть из a ClickEvent
имя виджета, на который был нажат?
Комментарии:
1. Поскольку эти события доставляются определенным объектам, вы уже знаете, какой виджет их получает. Или я действительно не понимаю, какую проблему вы пытаетесь решить.
Ответ №1:
Вы можете реализовать eventFilter
в своем MainWindow и прослушивать события из виджетов там :
bool MainWindow::eventFilter(QObject * obj, QEvent * event)
{
if((myWidget *)obj == widget1 amp;amp; event->type()==QEvent::KeyPress)
{
int pressedKey = ((QKeyEvent*)event)->key();
...
}
else if((myWidget *)obj == widget2 amp;amp; event->type()==QEvent::MouseButtonRelease)
{
if(((QMouseEvent*)event)->button() == Qt::LeftButton)
{
...
}
}
return false;
}
Также не забудьте установить фильтры событий для ваших виджетов в конструкторе MainWindow :
widget1->installEventFilter(this);
widget2->installEventFilter(this);