Ho un oggetto QGraphicsTextItem associato a un oggetto QGraphics. Voglio che QGraphicsTextItem risieda sempre direttamente sopra QGraphicsItem, ma voglio anche che il testo rimanga della stessa dimensione quando il fattore di scala scende sotto 1, cioè il testo rimane la dimensione è su un fattore di scala di 1 anche quando la grafica principale l'articolo è ridimensionato più piccolo. Ho trovato che impostare il flag QGraphicsItem::ItemIgnoresTransformations
su true quando il fattore di scala è inferiore a 1 fa il trucco per mantenere la dimensione.Mantenimento della posizione secondaria relativa dopo l'applicazione di QGraphicsItem :: ItemIgnoresTransformations
Ma non riesco a trovare un modo per ottenere che la posizione del testo rimanga sempre al di sopra del QGraphicsItem. C'è un modo per fare questo? Ho provato a utilizzare la funzione deviceTransform()
, ma il testo è stato spostato da QGraphicsItem mentre si scorreva. Quel che è peggio è che alcuni degli elementi di testo iniziarono a "tremare", cioè iniziarono a cambiare continuamente la loro posizione leggermente, così da sembrare che tremassero. Se questa è la funzione che devo usare, suppongo di non sapere come usarla correttamente.
Nel costruttore della mia QGraphicsItem Ho una QGraphicsTextItem:
fTextItem = new QGraphicsTextItem(getName(), this);
fTextItem->setFlag(QGraphicsItem::ItemIgnoresTransformations);
Ecco frammento di codice da funzioni vernice di 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);
}
non si dovrebbe impostare il QGraphicsTextItem bandiera oggetti di ignorare la trasformazione genitore al posto del l'QGraphicsItem? – ArmenB