0

我正在尝试创建一个 Qt 游戏程序,其中两名玩家控制两个机器人在 2D 地图中移动。我正在使用 QGraphicsView 执行此操作,并且已经走了这么远:

void MainWindow::on_keyPressed(QKeyEvent* event)
{
    if(event->key()==Qt::Key_Left)
        movingBox_1->setX(-5+movingBox_1->x());
    if(event->key()==Qt::Key_W)
        movingBox_2->setY(-5+movingBox_2->y());
    ...//other movements
}

其中movingBox_1movingBox_2是 QGraphicsScene 中的矩形。如果我只按一个键,这将有效。如果我同时按下Wleft,则只执行其中一个(第一个)。有没有办法实现:“同时按左和W,并movingBox_1同时movingBox_2向定义的不同方向移动”?

提前致谢。


更新:正如一个评论友好地指出,已经提出了一个类似的问题,eventFilter 似乎是一种可能的解决方法。但是当我尝试这种方法时,我发现如果我同时按下leftW,两个盒子同时移动,如果现在我释放其中一个,比如说left,那么整个东西会暂停片刻然后movingBox_2开始移动再次。显然这会极大地影响游戏体验(如果它是一款真实游戏)。有没有办法让这些按键行为“独立”,或者至少看起来“独立”?

另外,我注意到这个问题也被问到了这个问题,并且操作员在评论中提到了这个问题。但该评论没有得到任何回复。所以我认为他们的问题并没有真正解决我的问题。

4

0 回答 0