Tengo un QGraphicsTextItem criaron a un QGraphicsItem. Quiero que el QGraphicsTextItem que siempre residen directamente por encima de la QGraphicsItem, pero también quiero que el texto siga siendo el mismo tamaño cuando el factor de escala está por debajo de 1, es decir, el texto sigue siendo el tamaño que se encuentra en un factor de escala de 1 incluso cuando los gráficos de los padres el artículo es escalado más pequeño. He encontrado que establecer el indicador QGraphicsItem::ItemIgnoresTransformations
en verdadero cuando el factor de escala es inferior a 1 hace que el truco para retener el tamaño.mantener la posición relativa del niño después de aplicar QGraphicsItem :: ItemIgnoresTransformations
Pero me parece que no puede encontrar una manera de obtener la posición del texto de permanecer siempre por encima del QGraphicsItem. ¿Hay alguna forma de hacer esto? Traté de usar la función deviceTransform()
, pero el texto aún se movió fuera de QGraphicsItem mientras lo desplazaba. Lo que es peor es que algunos de los elementos de texto comenzaron a "sacudirse", es decir, comenzaron a cambiar continuamente su posición ligeramente, de modo que parecía que estaban temblando. Si esta es la función que necesito usar, supongo que no sé cómo usarla correctamente.
En el constructor de mi QGraphicsItem He añadido un QGraphicsTextItem:
fTextItem = new QGraphicsTextItem(getName(), this);
fTextItem->setFlag(QGraphicsItem::ItemIgnoresTransformations);
Aquí es fragmento de código de la función de pintura QGraphicsItem
qreal lod = painter->worldTransform().m22();
if(lod <= 1.0) {
fTextItem-setFlag(QGraphicsItem::ItemIgnoresTransformations);
fTextItem->setPos(fTextItem->deviceTransform(view-viewportTransform()).inverted().map(view->mapFromScene(mapToScene(0,0))));
} else {
fTextItem->setFlag(QGraphicsItem::ItemIgnoresTransformations, false);
fTextItem->setPos(0, 0);
}
qué no debe fijar el indicador QGraphicsTextItem objetos de ignorar la transformación de los padres en lugar de la del QGraphicsItem? – ArmenB