I'm trying to create a game on Qt where the player can go diagonally. So when I press W and D, the player can go to the upper right hand corner. However, when I press W first, then D, then release D, the player does not go in the W direction. In fact, the holding of the W key isn't even being signaled to call the keypressevent() function. However, when I press W, then D, and then release W, the character goes in the D direction.
Here are my codes:
void my_qscroll::keyPressEvent(QKeyEvent *event)
{
switch ( event->key() )
{
case Qt::Key_W:
key[0] = 1;
break;
case Qt::Key_A:
key[1] = 1;
break;
case Qt::Key_S:
key[2] = 1;
break;
case Qt::Key_D:
key[3] = 1;
break;
}
for(int i = 0; i != 4 ; i++)
{
if(key[i] == 1)
{
this->B = i;
emit Move();
}
}
}
void my_qscroll::keyReleaseEvent(QKeyEvent *event)
{
switch ( event->key() )
{
case Qt::Key_W:
key[0] = 0;
qDebug() << "released W";
break;
case Qt::Key_A:
key[1] = 0;
qDebug() << "released A";
break;
case Qt::Key_S:
key[2] = 0;
qDebug() << "released S";
break;
case Qt::Key_D:
key[3] = 0;
qDebug() << "released D";
break;
}
}
I'm not sure how to proceed through this problem. Any ideas or links to help me would be great. Thank you in advance.