Как управлять двумя объектами QGraphicsItem с несколькими ключевыми входами одновременно?
Я пытаюсь создать игровую программу 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
начинает двигаться снова. Очевидно, что это сильно влияет на игровой опыт (если бы это была настоящая игра). Есть ли способ заставить эти нажатия клавиш вести себя "независимо" или, по крайней мере, казаться "независимыми"?
Кроме того, я заметил, что этот вопрос также задавался в этом вопросе, и операционная система упомянула эту проблему в комментарии. Но на этот комментарий не было никаких ответов. Поэтому я не думаю, что их вопросы действительно решили мою проблему.