当QPushButton可见时,KeyPressEvent停止工作

时间:2016-10-06 13:24:50

标签: c++ qt

我在Arkanoid游戏中遇到了覆盖KeyPressEvent的问题。 我用它来控制球拍(左,右)。如果我松开一个游戏,QPushButton是可见的,我可以点击它来重置游戏,但在此之后我无法控制我的球拍。怎么了?

我的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 个答案:

答案 0 :(得分:0)

您是否尝试过点击球拍周围某处以将焦点更改为窗口?

另外......你的代码真的不可读,请使用if-s的大括号。总是。这些嵌套ifs的重点是什么。使用&amp;&amp;和它是不是更好代替?

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

 }