QT 键按下事件太慢

QT keyPressedEvent too slow?

本文关键字:事件 QT      更新时间:2023-10-16

我正在使用qt创建器开发一个射击游戏,我的问题是与场景keyPressEvent功能的链接:

void Scene::keyPressEvent(QKeyEvent *event){
    liste_event << event->key();
    if (liste_event.contains(Qt::Key_Left)) {
        vaisseau->MoveX(-1);
    }
    if (liste_event.contains(Qt::Key_Right)) {
        vaisseau->MoveX(1);
    }
}

它编译,但我的精灵(vasisseau)移动得很慢。如何改进代码以使其移动得更快?

好吧,问题是您将游戏的动画留给了 keyPressEvent ,它不会像您希望的那样频繁触发。

为了解决这个问题,我建议你使用传统的方法,它涉及一个函数来draw()场景(及其对象)。这个想法是,这个函数每X毫秒调用一次,并且绘图将独立于是否按下键而工作。

因此,在这种情况下,在keyPressEvent中,您只需存储按下的键,Scene::draw()中,您将实现基于存储的键使用适当参数调用MoveX()的逻辑。