Domanda

Ho accarezzato questo pezzo di codice:

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

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

Se il puntatore this riferisce ad un QGraphicsScene. In entrambi i casi, ottengo QPointF(0,0) per entrambe le uscite.
Dalla lettura del documento, ho pensato scenePos() deve restituire la posizione della linea all'interno della scena, non dove è all'interno del suo sistema di coordinate locale. Che cosa sto facendo di sbagliato?

È stato utile?

Soluzione

Dopo aver letto la documentazione QT 4.5 con attenzione su AddLine , mi rendo conto di quello che ho sono state facendo male. Secondo il documento:

  

Si noti che la geometria dell'elemento è   disponibile in coordinate voce, e la sua   posizione viene inizializzato a (0, 0)

Quindi, se mi specificare AddLine (50,50, 100, 100), sono in realtà modificherò le relative coordinate elemento locale. L'assunzione feci che sarà trattata come una coordinata scena è errata o infondata. Cosa dovrei fare è questo

// 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);

Quindi, se io sono l'aggiunta di una linea disegnando all'interno della scena, ho bisogno di ripristinare il suo centro a (0,0), quindi utilizzare SETPOS () per spostarlo dove voglio che sia nella scena.

Spero che questo aiuti chiunque inciampare sullo stesso problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top