gpt4 book ai didi

c++ - 在所有情况下将 keyPressEvent 传播到顶层 QWidget

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:56:15 25 4
gpt4 key购买 nike

我正在开发一个应用程序,在该应用程序中,我希望某个击键(假设为本例中的 Tab 键)始终由特定的 QWidget 处理。假设我有这样的层次结构:

QWidget (top level window)
¬ QWidget X (the widget that should handle all Tab presses)
¬ QWidget (inner widget)
¬ ...
¬ ...
¬ QLineEdit (very deep into the hierarchy)

QLineEdit 当前有焦点,您可以在其中输入文本。当用户按下 Tab 时,我希望它由 QWidget X(接近层次结构的最顶端)处理,以执行一些操作。如果当前窗口中的任何内容具有焦点,我如何确保特定的 QWidget 拦截每个 Tab 按键?

在每个子 QWidget 上安装事件过滤器是不切实际的,因为应用程序庞大且容易更改。

最佳答案

您可以使用 QShortcut,而不是让您的 QWidget 覆盖 keyPressEvent:

QShortcut *Shortcut = new QShortcut(this);
Shortcut->setKey(Qt::Key_Tab);
connect(Shortcut, SIGNAL(activated()), this, SLOT(TabPressed()));

然后在TabPressed()槽中,执行 Action 。无论是否有任何其他 QWidget 具有焦点,这都有效。

关于c++ - 在所有情况下将 keyPressEvent 传播到顶层 QWidget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18381038/

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