qt eventfilter keypress ничего не делает - PullRequest
0 голосов
/ 26 мая 2018

Я начал работать с QT и хочу запрограммировать небольшую игру под названием Pong (2 игрока и мяч).Левого игрока следует перемещать с помощью клавиш «W» и «S», правого - с помощью клавиш со стрелками вверх и вниз.У меня есть класс Game для управления моей анимацией.Там у меня есть фильтр событий для обработки keyPress

bool Game::eventFilter(QObject *target, QEvent *e)
{
    Q_UNUSED(target);

    bool handled = false;
    if(e->type() == QEvent::KeyPress)
    {
        QKeyEvent *keyEvent = (QKeyEvent *)e;

        if(keyEvent->key() == Qt::Key_W)
        {
            leftPlayerDir = ((leftPlayerDir == 0) ? 5 : leftPlayerDir);
            handled = true;
        }
        else if(keyEvent->key() == Qt::Key_S)
        {
            leftPlayerDir  = ((leftPlayerDir == 0) ? -5 : leftPlayerDir);
            handled = true;
        }
        else if(keyEvent->key() == Qt::Key_Up)
        {
            rightPlayerDir  = ((rightPlayerDir == 0) ? 5 : rightPlayerDir);
            handled = true;
        }
        else if(keyEvent->key() == Qt::Key_Down)
        {
            rightPlayerDir  = ((rightPlayerDir == 0) ? -5 : rightPlayerDir);
            handled = true;
        }
    }
     return handled;
}

, а в моем классе Понг, где я настраиваю Основное окно и обрабатываю кнопки, у меня есть строка для установки фильтра событий

ui->animation->installEventFilter(game);

Если я запускаю свою программу, анимация работает, но игроки не двигаются по нажатию клавиши, и я не знаю почему.Некоторые идеи?

...