我正在尝试创建一个 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_1
和movingBox_2
是 QGraphicsScene 中的矩形。如果我只按一个键,这将有效。如果我同时按下W
和left
,则只执行其中一个(第一个)。有没有办法实现:“同时按左和W,并movingBox_1
同时movingBox_2
向定义的不同方向移动”?
提前致谢。
更新:正如一个评论友好地指出,已经提出了一个类似的问题,eventFilter 似乎是一种可能的解决方法。但是当我尝试这种方法时,我发现如果我同时按下left
和W
,两个盒子同时移动,如果现在我释放其中一个,比如说left
,那么整个东西会暂停片刻然后movingBox_2
开始移动再次。显然这会极大地影响游戏体验(如果它是一款真实游戏)。有没有办法让这些按键行为“独立”,或者至少看起来“独立”?
另外,我注意到这个问题也被问到了这个问题,并且操作员在评论中提到了这个问题。但该评论没有得到任何回复。所以我认为他们的问题并没有真正解决我的问题。