0
我嘗試移動一個場景中的項目,爲此,我使用了QKeypressEvent
和moveBy
,這兩項工作都很完美,但我想恢復「按鍵事件」,所以我決定先,使用一個布爾值,當鍵被按下時返回true,否則返回false,然後創建一個新的函數,我稱moveBy
如果我的布爾值爲true,但不幸的是不起作用。 這是我在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 2014-10-19 17:54:58
@Ary謝謝你接受我的回答。我很欣賞你的評論,但在Stack Overflow上說「謝謝」的最好方法是投票並接受寫在這裏http://stackoverflow.com/help/someone-answers。你有足夠的聲譽來做到這一點,所以你可以投我的答案嗎?這只是在靠近答案的上方三角形上點擊一下。也謝謝你。 – Chernobyl 2014-10-20 12:26:24
對不起,它被接受,但我不能投票之前!完成;) – Ary 2014-10-20 14:10:34