Seite 1 von 1

Rectangle MouseMoveEvent

Verfasst: 25. Januar 2016 18:06
von Basti1990
Hallo Gemeinde,

ich arbeite gerade an einen Projekt eines Point and Click adventure.

Ich habe vorgestellt ein Rechteck zu benutzen als Spielfigur und später dann eine Textur drüber zu legen.

ich kann die figur mit dem Pfeiltasten auch schon bewegen nur mit der maus hapert es, ich weiß nicht

wie ich ein MouseMoveEvent bei einen Rectangle anwenden.

Ich hoffe jemand versteht mein problem und kann mir dabei helfen.

den Code habe ich angehangen und ich habe die Speicherverwaltung noch nicht gemacht,
weil ich zuerst die Funktionalität haben möchte wird später mit SharedPointer gemacht.

Hier der Code:

Code: Alles auswählen

MyRect.h

#ifndef MYRECT_H
#define MYRECT_H

#include <QGraphicsRectItem>
#include <QKeyEvent>
#include <QMouseEvent>
#include <QGraphicsScene>
#include <QGraphicsView>

class MyRect: public QGraphicsRectItem{
public:
    void keyPressEvent(QKeyEvent *event);
};

#endif // MYRECT_H

MyRect.cpp

#include "MyRect.h"

void MyRect::keyPressEvent(QKeyEvent *event)
{
    if(event->key() == Qt::Key_Left){
        setPos(x()-10,y());
    }

    else if(event->key() == Qt::Key_Right){
        setPos(x()+10,y());
    }

    else if(event->key() == Qt::Key_Up){
        setPos(x(),y()-10);
    }

    else if(event->key() == Qt::Key_Down){
        setPos(x(),y()+10);
    }

}

main.cpp

#include <QApplication>
#include "MyRect.h"


int main(int argc, char *argv[])
{

    QApplication a(argc, argv);

        QGraphicsScene *scene = new QGraphicsScene();

        MyRect *rect = new MyRect();
        rect->setRect(0,0,100,100);

        scene->addItem(rect);
        rect->setFlag(QGraphicsItem::ItemIsFocusable);
        rect->setFocus();

        QGraphicsView *view = new QGraphicsView(scene);

        view->show();
        view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
        view->setVerticalScrollBarPolicy  (Qt::ScrollBarAlwaysOff);

    return a.exec();
}
vielen Dank im Voraus

Basti1990

Re: Rectangle MouseMoveEvent

Verfasst: 1. Februar 2016 13:18
von Scary Hallo
Sorry, ich habe gerade keine Zeit mir dein konkretes Problem anzuschauen. Aber ein kleiner Tipp. Hast du dir schon mal das Graphics View Framework angeschaut? Da geht vieles von dem 'out of the box', wie z.B. Rechtecke mit der Maus ziehen.

http://doc.qt.io/qt-5/graphicsview.html

Gruß