Pregunta

He estado jugando con este pedazo de código:

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

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

Cuando el puntero this se refiere a un QGraphicsScene. En ambos casos, consigo QPointF(0,0) para la salida.
De la lectura del documento, pensé scenePos() se supone que devuelve la posición de la línea dentro de la escena, no dónde se encuentra dentro de su sistema de coordenadas local. ¿Qué estoy haciendo mal?

¿Fue útil?

Solución

Después de leer la documentación de Qt 4.5 con cuidado sobre AddLine , me doy cuenta de lo que yo han estado haciendo mal. De acuerdo con el documento:

  

Tenga en cuenta que la geometría del elemento es   dispuesto en el artículo coordenadas, y su   posición se inicializa a (0, 0)

Así que si puedo especificar AddLine (50,50, 100, 100), en realidad estoy modificando su coordenada elemento local. La suposición de que hice que va a ser tratada como una coordenada de escena está mal o infundada. Lo que debería hacer es esto

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

Así que si estoy añadiendo una línea de dibujo dentro de la escena, lo que necesito para restablecer su centro a (0,0) a continuación, utilizar setPos () para moverlo a donde yo quiero que sea en la escena.

Espero que esto ayuda a cualquier persona que se tropiezan con el mismo problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top