我在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));
}
答案 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));
}
}