3

假设我QWidget::keyPressEvent(QKeyEvent *e)在我的子类中重新实现了。

是否有必要在它的末尾调用基类的实现?

例子:

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

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

如果是这样,这样做有什么意义?

4

1 回答 1

6

如果您不对事件采取行动,则应始终将事件传递给基类的实现,因为它可能会对其采取行动,或者可能为它安装了事件过滤器。例如,如果用户按 Esc,则默认实现会QWidget关闭弹出窗口小部件。因此,为了确保不破坏任何事件处理,请始终将事件传递给基类,除非您对它们采取行动。

于 2013-02-02T22:11:56.040 回答