Obtener el cuadro delimitador de un elemento de tamaño constante en vistas de gráficos Qt
-
19-09-2019 - |
Pregunta
Necesito obtener el cuadro delimitador (en el espacio de la escena) de QGraphicsItem
s 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...
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