シーン内のアイテムを移動しようとするQKeypressEvent
とmoveBy
、両方とも完全に機能しますが、「キー押下イベント」を回復したいので、最初に、キーが押されたときに true を返すブール値を使用することにしました。そうでない場合は押されてfalseになり、ブール値がtrueの場合に呼び出す新しい関数を作成しますmoveBy
が、残念ながら機能しません。これは、file.cppで行ったことです
Perso::Perso()
{
right= false;
left= false;
up= false;
down= false;
moveOnMap();
setFlag(QGraphicsItem::ItemIsFocusable);
}
void Perso::moveOnMap(){
if (left) {
moveBy(-10,0);
}
if (right) {
moveBy(10,0);
}
if (up) {
moveBy(0, -10);
}
if (down) {
moveBy(0, +10);
}
}
void Perso::keyPressEvent(QKeyEvent *event){
switch(event->key()){
case Qt::Key_Up:
up=true;
//moveBy(0, -10);
break;
case Qt::Key_Right:
right=true;
// moveBy(10,0);
break;
case Qt::Key_Left:
left=true;
//moveBy(-10,0);
break;
case Qt::Key_Down:
down= true;
//moveBy(0, 10);
break;
}
update();
}
void Perso::keyReleaseEvent(QKeyEvent *event){
switch(event->key()){
case Qt::Key_Up:
up=false;
break;
case Qt::Key_Right:
right= false;
break;
case Qt::Key_Left:
left= false;
break;
case Qt::Key_Down:
down= false;
break;
}
}
誰が私が間違っているかを理解するのを手伝ってくれますか?