gpt4 book ai didi

c++ - 如何接受/忽略 QKeyEvent

转载 作者:行者123 更新时间:2023-11-30 02:48:33 24 4
gpt4 key购买 nike

http://qt-project.org/doc/qt-5/qwidget.html#keyPressEvent

Note that QKeyEvent starts with isAccepted() == true, so you do not need to call QKeyEvent::accept() - just do not call the base class implementation if you act upon the key.

http://qt-project.org/doc/qt-5/qkeyevent.html#details

A key event contains a special accept flag that indicates whether the receiver will handle the key event. You should call ignore() if the key press or release event is not handled by your widget. A key event is propagated up the parent widget chain until a widget accepts it with accept() or an event filter consumes it. Key events for multimedia keys are ignored by default. You should call accept() if your widget handles those events.

这有点令人困惑。我应该打电话接受还是不接受?如果我不处理它,我应该调用基础实现还是调用忽略?

第一页上写着我不需要调用 accept(),第二页上写着“向上传播到父小部件链,直到小部件用 accept() 接受它”

如果我调用基本版本,如果它是 QWidget,它基本上会调用 ignore()。这是否意味着它会返回到我的 keyPressedEvent,以被忽略的状态返回,然后再次调用 QWidget 的版本导致“键事件向上传播到父窗口小部件”?

最佳答案

如其所说,它会被自动接受。因此,如果您正在处理它,则无需执行任何操作。仅当您不处理按键事件时才应调用 ignore()

如果您的类是QWidget 的子类,并且您正在处理按键事件,则不要调用基类实现。不处理的话you can just call the base implementation as it will call ignore() .

您可以阅读 this ,如果您想了解更多有关接受和忽略事件的信息。

  • 第一页显示我不需要调用 accept(),第二页显示“在父小部件链中向上传播,直到小部件使用 accept() 接受它”

这意味着如果您选择忽略它,它将传播到父小部件。如果您选择接受它,它将不会传播到父小部件.

  • 如果我调用基本版本,如果它是 QWidget,它基本上会调用 ignore()。这是否意味着它会返回到我的 keyPressedEvent,以被忽略的状态返回,然后再次调用 QWidget 的版本导致“键事件向上传播到父窗口小部件”?

基类与父部件不同。基类是您的类派生自的类。父小部件是一个包含 this 对象作为其子小部件的对象。这通常是作为参数传递给构造函数的小部件。但是,如果父窗口小部件是 QWidget 类型,那么是的,就是这种情况。

关于c++ - 如何接受/忽略 QKeyEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21936037/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com