QT keyPressedEvent太慢了?

时间:2012-06-20 08:40:02

标签: c++ performance qt qgraphicsscene

我正在用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)移动得非常慢。如何改进代码以使其更快地移动?

1 个答案:

答案 0 :(得分:0)

嗯,问题在于您将游戏动画留给了keyPressEvent ,而这种动画并没有像您希望的那样频繁触发。

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

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