c++ - 使用 Qt 检查键是否已关闭

标签 c++ qt event-handling keyboard-events

我正在玩一些图形,我已经用箭头键实现了简单的相机移动。我的第一种方法是覆盖 keyPressEvent做这样的事情:

switch(key)
{
   case up: MoveCameraForward(step); break;
   case left: MoveCameraLeft(step); break;
   ...
}

这并没有像我希望的那样工作。例如,当我按住前进键时,相机向前移动“步”单位,然后停顿一会儿,然后继续移动。我猜这就是事件的生成方式,以避免在按键时间稍长的情况下出现多个事件。

因此,我需要轮询 Paint() 中的键盘常规。我还没有找到如何用 Qt 做到这一点。我想到了 map<Key, bool>将在 keyPressEvent 中更新和 keyReleaseEvent并在 Paint() 中轮询该 map .有更好的主意吗?感谢您提供任何见解。

最佳答案

这并不能解决检测哪些键被按下的一般问题,但如果您只是寻找键盘修饰符(shift、ctrl、alt 等),您可以通过静态 QApplication::keyboardModifiers() 检索它。和 QApplication::queryKeyboardModifiers()方法。

关于c++ - 使用 Qt 检查键是否已关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7394660/

相关文章:

c++ - 如何在不借助 std::function 的情况下存储函数对象?

qt - 根据 qml 中的内容获取项目高度的正确方法?

qt - 我应该使用 KeyPressEvent 还是 QAction 来实现按键?

qt - 我的代码哪里出错了?

c++ - 错误信息的含义

c++ - DrawText 和文本裁剪

Javascript 或 angularjs 推迟刷新之间的浏览器关闭或选项卡关闭

c# - 如何删除所有 Click 事件处理程序?

java - Netbeans 的 actionPerformed 使用自定义参数

c++ - CRT 未检测到 DLL 中的内存泄漏