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.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.