qt eventfilter keypress什么都不做

时间:2018-05-26 12:32:54

标签: qt animation keypress eventfilter

我开始使用QT,想要编写一个名为Pong的小游戏(2个玩家和一个球)。左边的玩家应该用键'W'和'S'移动,右边的玩家用箭头键上下移动。我有一个类游戏来处理我的动画。我有一个eventfilter来处理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;
}

在我的班级Pong中,我设置主窗口并处理按钮,我有一行来安装eventfilter

ui->animation->installEventFilter(game);

如果我开始我的程序动画正在运行,但是玩家没有继续使用keyPress,我不知道为什么。一些想法?

0 个答案:

没有答案