在Qt中同时按下多个按键

时间:2018-12-09 17:39:50

标签: c++ qt keypress

我正在使用Qt在C ++中创建2d应用程序。我有2个可以向左或向右移动的玩家。我想同时移动两个,但目前一次只能移动一个。

示例:如果我使用LEFT_ARROW,它将移动玩家1,并且如果我按下KEY_A(同时按下LEFT_ARROW),玩家1将停止,玩家2将开始移动。

如何使它们同时运动?

这是我的keyPressEvent方法:

void TerrainTest::keyPressEvent(QKeyEvent *e)
{
    switch ( e->key() )
    {
    case Qt::Key_Left:
        if(player1->x()-10>=-640)
        {
            player1->moveLeft();
            qDebug() << player1->x();
        }
        else
        {
            player1->setPos(-640,player1->y());
        }
        break;

    case Qt::Key_Right:
        if(player1->x()+10<=1180)
        {
            player1->moveRight();
        }
        else
        {
            player1->setPos(1180,player1->y());
        }    
        break;

    case Qt::Key_A:
        if(player2->x()-10>=-640)
        {
            player2->moveLeft();
        }
        else
        {
            player2->setPos(-640,player2->y());
        }
        break;

    case Qt::Key_D:
        if(player2->x()+10<=1180)
        {
            player2->moveRight();
        }
        else
        {
            player2->setPos(1180,player2->y());
        }
        break;    
    }
}

0 个答案:

没有答案