Seite 1 von 1

Update der QGraphicsView

Verfasst: 18. Dezember 2006 13:16
von mabu
Hi,

ich schreibe zur Zeit an einer Applikation, die ueber von auszen ( genauer UDP Broadcast ) periodisch Daten bekommt, die dargestellt werden sollen.

Nun habe ich 2 DockWidgets angelegt und ein CentralWidget auf dem gezeichnet wird. Das CentralWidget ist von QGraphicsView abgeleitet und dessen drawBackground Methode ueberschrieben um mir einen eigenen Hintergrund zu malen.

Weiters habe ich dann Klassen von QGraphicsEllipseItem abgeleitet um die externen Daten auch dort halten zu koennen.

Mein Problem nun:
Wenn ich die Applikation starte, kommen Daten rein, der Callback wird aufgerufen und die neue Position des QGraphicsEllipseItem gesetzt - ABER es passiert nichts. Die QGraphicsView/Scene scheint kein redraw() zu machen.
Wenn ich nun die DockWidget bewege/resize, dann erscheinen die QGraphicsEllipseItem an ihrem Ort, wo sie sein soll(t)en.

Ich finde aber nicht heraus, wieso das nicht passiert, wenn der Callback eine neue Position der Objekte setzt.

Hat jemand eine Idee?


TIA

Verfasst: 18. Dezember 2006 19:05
von upsala
Entweder sind die Signale der Scene geblockt. Oder du rufst den Event-Handler nicht auf.

Verfasst: 18. Dezember 2006 19:27
von mabu
aeeeehm - Welchen Eventhandler?

Ich setze die Position des QGraphicsEllipseItem immer neu. Somit war meine Erwartung, dass hier automatisch ein redraw() passiert.

Folgende Methode ist auch ueberschrieben:
http://doc.trolltech.com/4.2/qgraphicsi ... itemChange

Und ueber diese Events kommen rein nachdem ich die Position neu gesetzt habe.
Aber die draw(...) Methode wird nicht aufgerufen. Ich habe diese ueberschrieben um zu sehen ob etwas passiert, rufe darin auch die QGraphicsEllipse::draw() - Methode auf.

Verfasst: 18. Dezember 2006 19:30
von mabu
Meinst du folgende Methode?
http://doc.trolltech.com/4.2/qobject.html#blockSignals

Also explizit rufe ich die Methode nicht auf ... :roll:

Verfasst: 18. Dezember 2006 19:49
von upsala
Sorry, ich meinte die Event-Loop. Hmm, ich denke es wird Zeit für etwas Code.

Verfasst: 18. Dezember 2006 19:57
von mabu
Nachdem ich nicht genau weiss, was du sehen moechtest:

http://ablepsia.net/robocup/code/

pitch.* -> von QGraphicsView abgeleitet
robot_control.* -> von QGraphicsEllipseItem abgeleitet

Verfasst: 22. Mai 2007 10:34
von hilby
fehlt vielleicht ein

update ();

im itemChange() des graphicItems....

ich habe eine ähnliche konstruktion, und da funzt es prima....


greetz,
derHilby