c++ - QT keyPressedEvent太慢?

标签 c++ performance qt qgraphicsscene

我正在用 qt creator 开发射击游戏,我的问题是与场景的 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);
    }
}

它可以编译,但我的 Sprite (vassisseau) 移动得非常慢。我如何改进代码以使其运行更快?

最佳答案

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

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

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

关于c++ - QT keyPressedEvent太慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11115783/

相关文章:

c++ - 我想知道 QAction 是被鼠标左键还是右键点击

c++ - 如何将 `std::lower_bound` 与 `std::map` 一起使用?

c++ - 为什么这个编译器错误? - 没有匹配函数调用 'std::basic_ofstream<char>::open(std::string&)'

具有多个值的 Java 映射 : container class or multiple maps?

c# - 海量数据的问题

c++ - Qt 程序与另一个编译器崩溃

c++ - 如何协调跨进程的端口使用?

c++ - 为什么 CFile + CArchive 比 C I/O 流性能更好?

python - cython prange 不如单线程快

c++ - 如何在 TreeView 中的父属性更改时更改子属性?