Qt eventFilter для сочетания клавиш CTRL + TAB обрабатывается дальше, даже когда возвращается значение true - PullRequest
1 голос
/ 05 октября 2011

Я пытаюсь переопределить поведение Ctrl + Tab QMdiArea, установив eventFilter в область.

Реализация, которую я использую для проверки игнорированияСобытие выглядит следующим образом:

bool 
MyEventFilterClass::eventFilter(QObject * watched, QEvent * e)
{
  if (e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease ||
      e->type() == QEvent::Shortcut || e->type() == QEvent::ShortcutOverride)
  {
    // Ignore all keyboard and shortcut events
    return true;
  }
  return false;
}

Я думаю, что игнорирование всех событий клавиш и ярлыков блокирует Ctrl + Tab от обработки QMdiArea, но этонеправильно.Даже при возврате true для всех событий Ctrl + Tab по-прежнему работает нормально, хотя следующее активное окно не выделяется, как обычно.

Обратите внимание, что я реализую свое собственное поведение, как только яя могу заблокировать стандартное поведение.

Как заблокировать обработку Ctrl + Tab ?

1 Ответ

1 голос
/ 05 октября 2011

QMdiArea уже использует фильтр событий для перехвата Ctrl + Tab , поэтому вам нужно создать производный класс QMdiArea и переопределить его функцию eventFilter.

И поскольку в QMdiArea::eventFilter есть много других вещей, не забудьте перезвонить для событий, которые вы не хотите блокировать или обрабатывать.

...