使用键盘qt

时间:2018-11-21 09:58:22

标签: c++ qt qgraphicsview qgraphicsscene

我正在尝试使用箭头键移动对象,但是当我启动该应用程序时,什么也没发生。您是否有解决方法的想法?

@Update:我的矩形仅向左和向右移动一次,但是如果我使用qDebug,它可以识别我单击左或右的所有时间,有什么想法吗?

void MouvementJoueur::keyPressEvent(QKeyEvent *e)
{
switch ( e->key() )
    {
    case Qt::Key_Left:
        rectangle->setPos(x()-10,y());
        qDebug() << "You pressed the Key left";
        break;
    case Qt::Key_Right:
        rectangle->setPos(x()+10,y());
        qDebug() << "You pressed the Key right";
        break;
    }
 }

提前谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用以下命令刷新GUI

view->processEvents();

,您可以对其进行调试。它会检测是否按下按键。

void MouvementJoueur::keyPressEvent(QKeyEvent *e)
{
  if(e->key() == Qt::Key_Left)
  {
    rectangle->setPos(x()-10,y());
    qDebug() << "You pressed the Key x";
  } 

  if(e->key() == Qt::Key_Right)
  {
    rectangle->setPos(x()+10,y());
    qDebug() << "You pressed the Key x";
  }
}

答案 1 :(得分:1)

您的问题似乎是,您要确定父级的位置,并据此设置矩形的位置。这可能不是您想要在此处进行按键操作的原因。您应该这样设置位置:

rectangle->setPos(rectangle->x() - 10, rectangle->y());