Move a QGraphicsPixmapItem
-
I have a a character added via QgraphicsPixmapitem and now I want to move it by pressing the arrow keys on the keyboard. But I can't find a way. It gives compilation error. Help me please!
moveship.h (header file for my QPixmapItem)
#ifndef MOVESHIP_H #define MOVESHIP_H #include <QGraphicsPixmapItem> class moveship: public QGraphicsPixmapItem { public: void keyPressEvent(QKeyEvent *event); }; #endif // MOVESHIP_H
I am just checking if it recognises any key press or not.
Implementation of keyPressEvent:
#include "moveship.h" #include <QDebug> void moveship::keyPressEvent(QKeyEvent *event) { qDebug() << "moved"; }
My main source file:
#include<QApplication> #include<QGraphicsScene> #include<QGraphicsView> #include<QGraphicsPixmapItem> #include <moveship.h> int main(int argc, char *argv[]) { QApplication a(argc, argv); QGraphicsScene * scene = new QGraphicsScene(); QGraphicsView * view = new QGraphicsView(scene); QPixmap q = QPixmap("://images/player.png"); if(q.isNull()) { printf("null\n"); } else { moveship * player = new moveship(q); scene->addItem(player); } view->resize(500,500); view->show(); return a.exec(); }
Please help :(
-
If there is a compilation error why you did not post it?
-
Possibly the error is from the declaration of keyPressEvent
protected: virtual void keyPressEvent(QKeyEvent *event);
It might be better to have this handled in the parent class. When a graphics item is selected (clicked) store this information and move the item from the parent when the right key presses are seen. You might have a problem with losing focus otherwise.