http://qt-project.org/doc/qt-5/qwidget.html#keyPressEvent
请注意,QKeyEvent 以 isAccepted() == true 开头,因此您不需要调用 QKeyEvent::accept() - 如果您对键进行操作,则不要调用基类实现。
http://qt-project.org/doc/qt-5/qkeyevent.html#details
按键事件包含一个特殊的接受标志,指示接收器是否将处理按键事件。如果您的小部件未处理按键按下或释放事件,您应该调用 ignore()。一个关键事件沿父窗口小部件链向上传播,直到窗口小部件使用 accept() 接受它或事件过滤器使用它。默认情况下忽略多媒体按键的按键事件。如果您的小部件处理这些事件,您应该调用 accept()。
这有点令人困惑。我应该打电话接受还是不接受?如果我不处理它,我应该调用基本实现还是调用忽略?
第一个页面显示我不需要调用accept(),第二个页面显示“向上传播到父小部件链,直到小部件使用accept()接受它”
如果我调用基本版本,如果它是 QWidget,它基本上会调用 ignore()。这是否意味着它将返回到我的 keyPressedEvent,返回忽略状态,然后再次调用 QWidget 的版本,因为“键事件被传播到父小部件”?