Rectangle MouseMoveEvent

Alles rund um die Programmierung mit Qt
Antworten
Basti1990
Beiträge: 17
Registriert: 31. März 2014 17:38

Rectangle MouseMoveEvent

Beitrag 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
Dateianhänge
MyRect.h
(288 Bytes) 226-mal heruntergeladen
MyRect.cpp
(417 Bytes) 229-mal heruntergeladen
main.cpp
(621 Bytes) 226-mal heruntergeladen
Scary Hallo

Re: Rectangle MouseMoveEvent

Beitrag 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ß
Antworten