Перемещение объекта с помощью клавиатуры qt - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь переместить объект с помощью клавиш со стрелками, но когда я запускаю приложение, ничего не происходит.У вас есть идея, как это исправить?

@ Обновление: мой прямоугольник перемещается только один раз влево и вправо, но если я использую 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 голосов
/ 21 ноября 2018

Похоже, ваша проблема в том, что вы берете положение родителя и устанавливаете положение прямоугольника на основании этого.Это, вероятно, не то, что вы хотите сделать с нажатиями клавиш здесь.Вы должны установить позицию следующим образом:

rectangle->setPos(rectangle->x() - 10, rectangle->y());
0 голосов
/ 21 ноября 2018

Вы можете обновить графический интерфейс с помощью следующей команды

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";
  }
}
...