Я хочу, чтобы "событие" происходило при нажатии клавиши ввода, когда выбрано qtreeview. Поскольку я предпочитаю не создавать подкласс qtreeview (проще для дизайнера) - я попытался установить фильтр событий. Однако, похоже, это не сработало:
Класс просто содержит открытую функцию:
bool InputTreeEventHandler::eventFilter(QObject *obj, QEvent *event) const {
if (event->type() == QEvent::KeyPress) {
QKeyEvent *keyevent = dynamic_cast<QKeyEvent*>(event);
QTreeView* tree = dynamic_cast<QTreeView*>(obj);
if (keyevent->key() == Qt::Key_Enter) {
//code
}
} else {
return false;
}
}
И событие добавляется следующим образом:
ui.InputTreeView->installEventFilter(InputTreeKeyboardEater.get());
Где ui.InputTreeView
- это древовидная структура, которую я хочу использовать при нажатии клавиши ввода, и InputTreeKeyboardEater
(общий) указатель на объект InputTreeEventHandler
Если поставить точку останова в начале функции выше, это показывает, что весь обработчик событий даже не вызывается - что я могу сделать неправильно?