Koordinate eines Items berechnen

Alles rund um die Programmierung mit Qt
Antworten
anno1988
Beiträge: 280
Registriert: 23. Januar 2009 20:49

Koordinate eines Items berechnen

Beitrag von anno1988 »

Hallo,

ich will ein item aus einem Parent Item heraus lösen.

Dazu setze ich einfach setParentItem(0);

Beide Objekte, parent und die Scene haben ja unterschiedliche Koordinatensysteme.
Aber wie bekomme ich die koordinate heraus, an die ich ein Item platzieren muss, nachdem ich es von dem Parent-item losgelöst habe?

ich habe schon folgendes versucht, allerdings verschiebt sich das item da immer.

Code: Alles auswählen


QGraphicsRectItem *rect;

point_item = rect->mapFromScene(
rect.boundingRect.x()+rect.pos().x(),
rect.boundingRect.y()+rect.pos().y());

rect.setParentItem(0);


rect.setRect(point_item.x(), point_item.y(),

hat da jeamnd eine idee wie das genau geht?
kater
Beiträge: 306
Registriert: 29. Dezember 2009 01:13
Wohnort: Darmstadt

Beitrag von kater »

Code: Alles auswählen

QGraphicsRectItem *rect; 
*rect ist doch ein Pointer. Du benutzt ihn in der nächsten Zeile gleich ohne ihn irgendwie zu initialisieren. Nehme einfach mal stark an, du hast den Code einfach nicht gepostet.

Und dann nimmst du überall den Punkt-Operator z.b. rect.setParentItem(0); statt den Pfeil ->
oder du mischst es.

Der Code compiliert doch so garnicht.
anno1988
Beiträge: 280
Registriert: 23. Januar 2009 20:49

Beitrag von anno1988 »

kater hat geschrieben:

Code: Alles auswählen

QGraphicsRectItem *rect; 
*rect ist doch ein Pointer. Du benutzt ihn in der nächsten Zeile gleich ohne ihn irgendwie zu initialisieren. Nehme einfach mal stark an, du hast den Code einfach nicht gepostet.

Und dann nimmst du überall den Punkt-Operator z.b. rect.setParentItem(0); statt den Pfeil ->
oder du mischst es.

Der Code compiliert doch so garnicht.
richtig, ist ein Schreibfehler von mir gewesen:

Code: Alles auswählen



QGraphicsRectItem *rect;

rect = new QGraphicsRectItem();

point_item = rect->mapFromScene(
rect->boundingRect.x()+rect.pos().x(),
rect->boundingRect.y()+rect.pos().y());

rect->setParentItem(0);

rect->setRect(
point_item.x(), point_item.y(),
rect->boundingRect().width(),
rect->boundingRect().height());


Nvidia
Beiträge: 238
Registriert: 22. Februar 2010 21:23

Beitrag von Nvidia »

anno1988
Beiträge: 280
Registriert: 23. Januar 2009 20:49

Beitrag von anno1988 »

Ja, die hatte ich mir schon angeschaut. wobei das maptoGlobal ganz gut aussieht.

Allerdings bekomme ich von einem QGraphicsitem nirgend ein "QWidget" zurück geliefert.

Das einzige was ich gefunden habe ist das hier:

http://doc.trolltech.com/4.6/qgraphicsi ... rentWidget

diese Methode gibt allerdings ein QGraphicsWidget ud nicht ein QWidget zurück.
Nvidia
Beiträge: 238
Registriert: 22. Februar 2010 21:23

Beitrag von Nvidia »

ok das wird nicht gehen, weil nichts von QWidget erbt.
aber QGraphicsItem hat doch auch genug map funktionen
probiers doch mal mit mapToScene
Antworten