我正在玩一些图形,我已经用箭头键实现了简单的相机移动。我的第一种方法是覆盖 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/