我正在尝试在 Qt 上创建一个玩家可以对角线进行的游戏。所以当我按下 W 和 D 时,玩家可以到右上角。但是,当我先按 W,然后按 D,然后松开 D,播放器不会向 W 方向移动。事实上,按住 W 键并没有发出调用 keypressevent() 函数的信号。但是,当我按 W,然后 D,然后松开 W 时,角色会朝 D 方向移动。
这是我的代码:
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;
}
}
我不确定如何解决这个问题。任何可以帮助我的想法或链接都会很棒。先感谢您。