KeyPressEvent перестает работать, когда QPushButton виден

у меня есть проблема с моим переопределенным KeyPressEvent в моей игре арканоида.
Я использую его для управления веслом (слева, справа). Если я теряю игру, QPushButton становится видимым, и я могу нажать на него, чтобы сбросить игру, но после этого я не могу управлять своим веслом. Что случилось?

My keyPressEvent:

void MainWindow::keyPressEvent(QKeyEvent * event)
{
    int x = ui->paletka->x();
    int y = ui->paletka->y();
    if( ui->paletka->x() > 2 )
        if( event->key() == Qt::Key_Left)
        ui->paletka->move(QPoint(x-8, y));
    if( ui->paletka->x() < 898 )
        if( event->key() == Qt::Key_Right)
            ui->paletka->move(QPoint(x+8, y));
 }

1 ответ

  1. Вы пробовали щелкнуть где-нибудь вокруг весла, чтобы изменить фокус на окно?

    Также… Ваш код действительно не читается, пожалуйста, используйте фигурные скобки для if-s. Всегда. Также в чем смысл этих вложенных ifs. Не лучше ли использовать && вместо этого?

    void MainWindow::keyPressEvent(QKeyEvent * event)
    {
        int x = ui->paletka->x();
        int y = ui->paletka->y();
        if( ui->paletka->x() > 2 && event->key() == Qt::Key_Left)
        {
            ui->paletka->move(QPoint(x-8, y)); 
        }
        if( ui->paletka->x() < 898 && event->key() == Qt::Key_Right)
        {
            ui->paletka->move(QPoint(x+8, y));
        }
    
     }