【发布时间】:2014-02-21 13:39:37
【问题描述】:
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
一个键事件包含一个特殊的接受标志,指示是否 接收者将处理关键事件。如果 您的小部件不处理按键或释放事件。一个关键事件 向上传播到父小部件链,直到小部件接受它 使用 accept() 或事件过滤器使用它。关键事件 默认情况下忽略多媒体键。如果你应该调用 accept() 您的小部件会处理这些事件。
这有点令人困惑。我应该打电话接受还是不接受?如果我不处理它,我应该调用基本实现还是调用忽略?
第一页显示我不需要调用accept(),第二页显示“向上传播到父小部件链,直到小部件接受它使用accept()”
如果我调用基本版本,如果它是 QWidget,它基本上会调用 ignore()。那是不是意味着它会返回到我的 keyPressedEvent,返回忽略状态,然后再次调用 QWidget 的版本,因为“键事件被传播到父小部件”?
【问题讨论】:
标签: c++ qt event-handling keyevent qkeyevent