0
장면에서 항목을 이동하려고 시도 했으므로 QKeypressEvent
및 moveBy
모두 완벽하게 작동하지만 "키 프레스 이벤트"를 복구하고 싶습니다. 그래서 먼저 결정했습니다 , 키를 누를 때 true를 반환하는 부울을 사용하고 부울이 아닌 경우 false를 반환하고 부울이 true 인 경우 moveBy
을 호출하는 새 함수를 만들지 만 불행히도 작동하지 않습니다. 내 file.cpp에서 수행 한장면에서 항목 이동 Qt
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;
}
}
누구든지 내가 잘못 곳에 나를 이해하는 데 도움이 수있는 이다?
예! 작동합니다. 많은 감사합니다! – Ary
@Ary 내 답변을 수락 해 주셔서 감사합니다. 귀하의 의견을 주셔서 감사하지만 스택 오버플로에 "감사합니다"라고하는 가장 좋은 방법은 투표이며 여기에 작성된대로 동의합니다 http://stackoverflow.com/help/someone-answers. 이 일을하기에 충분한 평판이 있으니 내 대답에 투표 해 주시겠습니까? 대답 근처의 위 삼각형을 한 번 클릭하는 것입니다. 고마워. – Chernobyl
죄송합니다. 동의했지만 이전에 투표를 할 수 없었습니다! 완료;) – Ary