16,212
社区成员
发帖
与我相关
我的任务
分享
哈哈哈哈我也遇到了这样的问题,结果我设置了两个char类型变量把键盘输入接收两次,然后switch这两个char类型的变量就搞定了,这样就能往斜上方走了
void MyView::keyPressEvent(QKeyEvent *e)
{
if(key1 == 0)
{
key1 = e->key();
}
else
{
key2 = e->key();
}
return QGraphicsView::keyPressEvent(e);
}
void MyView::keyReleaseEvent(QKeyEvent *e)
{
if(e->key() == key1)
{
key1 = 0;
if(key2 != 0)
{
key1 = key2;
key2 = 0;
}
}
else if(e->key() == key2)
{
key2 = 0;
}
return QGraphicsView::keyReleaseEvent(e);
}
void MyView::dealKey(int key)
{
switch(key)
{
case 0:
break;
case 0x01000012: //Qt::Key_Left
car->m_x -= 5;
break;
case 0x01000013: //Qt::Key_Up
car->m_y -= 5;
break;
case 0x01000014: //Qt::Key_Right
car->m_x += 5;
break;
case 0x01000015: //Qt::Key_Down
car->m_y += 5;
break;
default:
break;
}
}
谢谢你的帮助!