Komplexe QGraphicItems erstellen? (Newbie)

Alles rund um die Programmierung mit Qt
Antworten
Brownie
Beiträge: 15
Registriert: 2. März 2007 10:40

Komplexe QGraphicItems erstellen? (Newbie)

Beitrag von Brownie »

Hallo,

ich habe ein paar Fragen zu QGraphicsItem. Und zwar möchte ich ein Item erstellen, was relativ komplex wird und würde daher gern in meinem Item mehrere weitere QGraphicsItems als Membervariablen verwalten.

Wenn ich das aber so umsetze wird beim Verschieben per Drag-And Drop nur das gezeichnet, was in paint() definiert ist. Also habe ich versucht, die paint-Funktion der Membervariablen aufzurufen, aber dabei stürzt immer alles ab ("Unbehandelte Ausnahme bei 0x65288f96 (QtGuid4.dll) in BehaviorEditor.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00000008.")

Code: Alles auswählen

void BehaviorComponent::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
 
     graphicsEllipseItem ->paint(painter, option, editWidget);
     painter->drawRect(-50, -25, 100, 50);
	 
}

Weiss jemand, was ich verbocke? Oder gibt es einfach einen anderen Weg komplexe Items zu bauen?
Ich verwende übrigens Qt 4.2.1.

Hoffe, jemand kann mir helfen.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Ich würde hier den Fehler suchen:

Code: Alles auswählen

 graphicsEllipseItem ->paint(painter, option, editWidget); 
Wahrscheinlich ist graphicsEllipseItem nicht initalisiert.
Brownie
Beiträge: 15
Registriert: 2. März 2007 10:40

Beitrag von Brownie »

doch. Im Konstruktor der Klasse rufe ich Folgendes auf:

Code: Alles auswählen

graphicsEllipseItem= new QGraphicsEllipseItem(-5,-5, 10, 10, this, editWidget->scene());
graphicsEllipseItem->setPos(50,0);
Beim Start des Programmes, wo ich ein BehaviorComponent Objekt erstelle, wird dann der Kreis auch gezeichnet.

Wenn ich allerdings das ganze Objekt per Drag and drop in ein anderes Widget ziehe und dort mithilfe der per Drag and Drop übergebenen Daten ein neues BehaviorComponent-Objekt erzeuge zeigt er mir keine Ellipse für das neu erzeugte Objekt an.
Antworten