Objekt auf QGraphicsView verschieben

Alles rund um die Programmierung mit Qt
Antworten
Mani99
Beiträge: 244
Registriert: 15. April 2009 10:46
Wohnort: München

Objekt auf QGraphicsView verschieben

Beitrag von Mani99 »

Hi,

ich habe ein QGraphicsView, darauf platziere ich eine QGraphicsScene, und darauf ein objekt z.b. ein QLabel.

Wie kann ich das QLabel darauf verschieben?

Ich habe bis jetzt eine neue klasse von QGraphicsScene abgeleitet und darin das mouseMoveEvent überschrieben.

Code: Alles auswählen

class GraphicsSceneTest : public QGraphicsScene
{
public:
    GraphicsSceneTest();
    void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
};

Code: Alles auswählen

#include "graphicsscenetest.h"

GraphicsSceneTest::GraphicsSceneTest()
{
}

void GraphicsSceneTest::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{

}
In der hauptklasse habe ich das auch das mouseMoveEvent erstellt und übergeben das event an die abgeleitete scene.

Code: Alles auswählen

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    mScene = new GraphicsSceneTest();
}

void MainWindow::mouseMoveEvent(QGraphicsSceneMouseEvent *e)
{
    mScene->mouseMoveEvent(e);
}
Ich würde mich über ein kurzes beispiel freuen oder einen hinweis oder dgl.

Danke!
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Schau dir mal in deiner Qt-Installation/Sourcen das "demos/embeddeddialog" an. Ist wahrscheinlich das was du willst.
ScyllaIllciz
Beiträge: 200
Registriert: 9. Juli 2010 19:31

Beitrag von ScyllaIllciz »

Es reicht ein:

Code: Alles auswählen

    m_textItem->setFlag(QGraphicsItem::ItemIsMovable, true);
Brauchst also kein Event abfangen!!!

Scylla
Mani99
Beiträge: 244
Registriert: 15. April 2009 10:46
Wohnort: München

Beitrag von Mani99 »

Danke für die antworten, ich werd mir beides ansehen.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

ScyllaIllciz hat geschrieben:Es reicht ein:

Code: Alles auswählen

    m_textItem->setFlag(QGraphicsItem::ItemIsMovable, true);
Brauchst also kein Event abfangen!!!

Scylla
Das hab ich auch gedacht, habs ausprobiert - geht mit QGraphicsProxyWidgets nicht, und das braucht er wenn er ein QWidget (das angegebene QLabel) reinlegen will.
Sollte das QLabel nur aus Unwissenheit angeführt worden sein: Es gibt QGraphicsTextItem (und viele andere). Oder willst du wirklich noch andere QWidgets einfügen?
Mani99
Beiträge: 244
Registriert: 15. April 2009 10:46
Wohnort: München

Beitrag von Mani99 »

Testweise wollte ich auch andere widgets einfügen (label, button, etc.), um die graphics klassen etwas in den griff zu bekommen.

Da ich aber jetzt testweise produktiv etwas machen soll, werde ich wohl QGraphicsTextItem verwenden bzw. die verfügbaren graphics widgets.

Sobald ich aber etwas zeit habe, werde ich mich testweise um die anderen widgets auch kümmern.

Danke für die infos.
Antworten