Domanda

C'è comunque per calcolare la lunghezza del testo quando TextWidth = -1?.

Ho un rettangolo che ha un QGraphicsTextItem In esso, e voglio cambiare la larghezza del rettangolo quando i caratteri superano il rettangolo.

È stato utile?

Soluzione

textwidth = -1 significa che

[...] il testo non verrà suddiviso in più righe a meno che non venga applicato attraverso una rottura della linea esplicita o un nuovo paragrafo."

(QTextDocument :: TextWidth ())

Quindi, se vuoi ottenere la lunghezza del tuo QGraphicsTextItem Non puoi usare textWidth, ma invece hai bisogno della lunghezza effettiva della stringa all'interno di questo QGraphicsTextItem. Dai un'occhiata a QGraphicStextitem :: topLainText (), che restituisce un Qstring. Chiamata size() su quella stringa.

int length = my_graphics_text_item.toPlainText().size() 

Ora hai il numero di caratteri in questa stringa e puoi implementare una funzione di ridimensionamento per far crescere il tuo rettangolo, quando ci sono troppi caratteri. È una specie di soluzione alternativa, ma spero che aiuti a risolvere il tuo problema.

Altri suggerimenti

Ho trovato questo post fermandomi sullo stesso problema.

sto usando text->boundingRect().width()Per ottenere la larghezza.

Forse aiuta chiunque

È inoltre possibile creare un'istanza QFontMetrics ([font della tua QGraphicStextitem]) e chiamare la sua funzione di larghezza (QString) per ottenere la larghezza della stringa passata in pixel, se fosse disegnata nella fontfamily/-ze/-pesi specificata. Basta ottenere il conteggio dei caratteri è ragionevole solo quando si utilizza un carattere monospazzato. In tutti gli altri casi non è una buona idea.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top