Https://doc.qt.io/qt-5/qwidget.html#keypressevent
注意Qkeyevent以isaccepted()== true开始,所以您不 需要致电Qkeyevent :: Accept() - 请不要致电基类 实施如果您采取钥匙。
https://doc.qt.io/qt-5/qkeyevent.html#details
一个关键事件包含一个特殊的接受标志,该标志指示是否是否 接收器将处理关键事件。如果是 密钥按下或发布事件未由您的小部件处理。关键事件 在小部件接受之前,要繁殖父部件链 使用Accept()或事件过滤器会消耗它。关键事件 默认情况下忽略了多媒体密钥。您应该致电Accept()如果 您的小部件处理这些事件。
这有点令人困惑。我应该打电话接受吗?我应该调用基本实现或拨打忽略,如果我不处理?
第一页读取我不需要调用accept(),第二页读取“在窗口小部件接受
with accept()”之前,将press the prends传播。
如果我称基本版本为基本版本,则基本上将ignore()如果是qwidget。这并不意味着它将返回我的kepressedevent,以忽略状态返回,然后Qwidget的版本再次称为原因“密钥事件已传播到父窗口”?就像它说,它被自动接受。因此,如果您要处理它,则无需做任何事情。只有当您不处理关键事件时,才应该致电
如果您的班级是
QWidget
的子类,如果您要处理关键事件,则请勿调用基本实现。如果您不处理它,则您可以调用基本实现,因为它将调用ignore()
parent widget
。如果您选择,则它将not传播到
parent widget
.。
如果我称基本版本为基本版本,则基本上将ignore()如果是qwidget。这并不意味着它将返回我的kepressedevent,以忽略状态返回,然后Qwidget的版本再次称为原因“密钥事件已传播到父窗口”?
基类与父窗口小部件不同。基类是您的课程派生的课程。父窗口小部件是一个包含this
对象作为其子小部件的对象。这通常是将构造函数传递给构造函数的小部件。但是,如果父窗口小部件是QWidget
类型,那么是的,就是这样。