gpt4 book ai didi

qt - 如何禁止在Qt中使用带按钮的键盘上的箭头键

转载 作者:行者123 更新时间:2023-12-04 12:59:29 25 4
gpt4 key购买 nike

我正在 Qt 中做一个简单的项目来旋转一个立方体,但键盘和按钮上的箭头有问题。

我有两个按钮,当我点击第一个按钮时,立方体向右旋转,第二个按钮用于将它向左旋转。

我在键盘上还有两个方向键,向上和向下,它们的功能与按钮相同。当我按下向上箭头时,立方体向右旋转等等。

问题是当我启动应用程序时,箭头不是控制旋转,而是选择按钮。所以我需要知道在哪里可以更改此选项,即关闭按钮中箭头键的导航操作。

Projet是继承QMainWindow制作的。

最佳答案

默认情况下,QPushButton(与QWidget 的许多其他子类一样)将具有处理键盘焦点的默认方式。对于按钮,箭头键可将键盘焦点从一个按钮移动到下一个按钮,以便于在窗口中导航并在没有鼠标的情况下与小部件进行交互。

正如 hank 在评论中建议的那样,您可以通过调用其 setFocusPolicy(Qt::NoFocus) 强制 QPushButton 不接受键盘焦点,但这只会起作用在特定情况下,按钮是 QMainWindow 中唯一可以窃取焦点的按钮。如果你在那里有其他小部件(例如 QLineEdit),当焦点在那里结束时,箭头键仍然无法正常工作,因为 QLineEdit 会捕获这些键,什么都不做。

解决问题的更灵活的方法是在每个 QMainWindow 的子部件上安装一个事件过滤器,并让该事件过滤器将箭头键事件转发给旋转的函数您的多维数据集(同时让其他所有内容通过以允许任何其他事件由适当的小部件处理)。

另一种解决方案是让您的立方体小部件使用 QWidget::grabKeyboard() 获取所有键盘事件。这将确保每个键盘事件都被发送到该小部件,无论键盘焦点在哪里。当您想让其他小部件接收键盘事件时,您需要调用QWidget::releaseKeyboard() 取消抓取。

关于qt - 如何禁止在Qt中使用带按钮的键盘上的箭头键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14236292/

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