Frage

Ich habe mit diesem Stück Code worden liebäugelt:

QGraphicsLineItem * anotherLine = this->addLine(50,50, 100, 100);
qDebug() << anotherLine->scenePos();

QGraphicsLineItem * anotherLine2 = this->addLine(80,10, 300, 300);
qDebug() << anotherLine2->scenePos();

Wenn der this Zeiger auf eine QGraphicsScene bezieht. In beiden Fällen ich QPointF(0,0) für beide Ausganges.
Dokument Aus der Lektüre dachte ich scenePos() soll die Position der Linie innerhalb der Szene zurückzukehren, nicht dort, wo es innerhalb seines lokalen Koordinatensystem. Was mache ich falsch?

War es hilfreich?

Lösung

Nach der QT 4.5 Dokumentation sorgfältig zu lesen auf AddLine , wird mir klar, was ich Unrechttuns wurden. Gemäß dem Dokument:

  

Beachten Sie, dass die Sache des Geometrie   in Punkt Koordinaten versehen, und ihre   Position wird initialisiert (0, 0)

Wenn ich also angeben AddLine (50,50, 100, 100), ich bin zu modifizieren tatsächlich sein lokales Element koordinieren. Die Annahme, die ich gemacht, dass sie behandelt wird wie eine Szene koordinieren falsch oder unbegründet. Was soll ich tun, ist dies

// Create a line of length 100
QGraphicsItem * anotherLine = addLine(0,0, 100, 100); 

// move it to where I want it to be within the scene
anotherLine->setPos(50,50);

Also, wenn ich eine Linie bin Zugabe von in der Szene zeichnet, muß ich seine Mitte (0,0) dann zum Zurücksetzen verwenden setPos (), um es zu bewegen, wo ich es will in der Szene sein.

Hoffen, das jeden, der auf das gleiche Problem stolpern können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top