使用键盘qt移动对象

Moving object using keyboard qt

我正在尝试使用箭头键移动对象,但是当我启动该应用程序时,没有任何反应。您知道如何解决它吗?

@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;
    }
 }

提前致谢!

您可以使用以下命令刷新 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";
  }
}

您的问题似乎是,您占据了父级的位置,并基于此设置了矩形的位置。这可能不是您想在此处使用按键进行的操作。您应该这样设置位置:

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