Obtener el cuadro delimitador de un elemento de tamaño constante en vistas de gráficos Qt

StackOverflow https://stackoverflow.com/questions/1719694

  •  19-09-2019
  •  | 
  •  

Pregunta

Necesito obtener el cuadro delimitador (en el espacio de la escena) de QGraphicsItems que tienen el QGraphicsItem::ItemIgnoresTransformations conjunto de banderas.

Según los documentos, es necesario utilizar QGraphicsItem::deviceTransform() Para hacer eso.Probé esto:

// Get the viewport => scene transform
vp_trans = view.viewportTransform();
// Get the item => viewport transform
trans = item.deviceTransform(vp_trans);
// Get the item's bounding box in item's space
bbox = item.boundingRect();
// Map it to viewport space
bbox = trans.mapRect(bbox);
// Map it back to scene's space
bbox = vp_trans.mapRect(bbox);

Pero algo anda mal, los cuadros delimitadores parecen más pequeños y muy a la derecha de los elementos...

¿Fue útil?

Solución

Lo acabo de descubrir, el documento QGraphicsView::viewportTransform() dice "Devuelve una matriz que asigna las coordenadas de la ventana gráfica a las coordenadas de la escena.", pero en realidad devuelve el escena a ventana gráfica transformar.

Invertir vp_trans en el último paso solucionó mi problema.

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