Ottenere la lunghezza di QGraphicStextitem?
-
27-10-2019 - |
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.
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.