Действительно ли необходимо назвать обработчик событий базового класса в подклассах?

Скажите, что я имею QWidget:: keyPressEvent (QKeyEvent *e) повторно осуществленный в моем подклассе.

Действительно ли необходимо назвать внедрение базового класса в конце его?

Пример:

MyWidget::keyPressEvent(QKeyEvent *e)
{
   //my event handler...

   //now call parent event handler, necessary?
    QWidget::keyPressEvent(e);
}

Если так, какой смысл того, чтобы делать это?

3
nl ja de

1 ответы

Если вы не действуете на событие, необходимо всегда передавать событие к внедрению базового класса, поскольку это может действовать на него, или может быть фильтр событий, установленный для него. Реализация по умолчанию , QWidget , например, закрывает всплывающие виджеты, если пользователь давит на Esc. Так, чтобы убедиться не сломать любую обработку событий, всегда передавайте события базовому классу, если вы не действуете на них.

5
добавлено
Qt
Qt
703 участник(ов)

Группа взаимопомощи Qt.Делимся советами и помогаем друг другу. Наш информационный канал @ProQt Полезная информация для начинающих: #newcomer Познавательная информация: #fyi #didyouknow Наши друзья: Чат с/с++ @ProCxx