我正在尝试使用箭头键移动对象,但是当我启动该应用程序时,什么也没发生。您是否有解决方法的想法?
@Update:我的矩形仅向左和向右移动一次,但是如果我使用qDebug,它可以识别我单击左或右的所有时间,有什么想法吗?
void MouvementJoueur::keyPressEvent(QKeyEvent *e)
{
switch ( e->key() )
{
case Qt::Key_Left:
rectangle->setPos(x()-10,y());
qDebug() << "You pressed the Key left";
break;
case Qt::Key_Right:
rectangle->setPos(x()+10,y());
qDebug() << "You pressed the Key right";
break;
}
}
提前谢谢!
答案 0 :(得分:1)
您可以使用以下命令刷新GUI
view->processEvents();
,您可以对其进行调试。它会检测是否按下按键。
void MouvementJoueur::keyPressEvent(QKeyEvent *e)
{
if(e->key() == Qt::Key_Left)
{
rectangle->setPos(x()-10,y());
qDebug() << "You pressed the Key x";
}
if(e->key() == Qt::Key_Right)
{
rectangle->setPos(x()+10,y());
qDebug() << "You pressed the Key x";
}
}
答案 1 :(得分:1)
您的问题似乎是,您要确定父级的位置,并据此设置矩形的位置。这可能不是您想要在此处进行按键操作的原因。您应该这样设置位置:
rectangle->setPos(rectangle->x() - 10, rectangle->y());