Pregunta

¿Hay de todos modos para calcular la longitud del texto cuando TextWidth = -1?.

Tengo un rectángulo que tiene un QGraphicsTextItem en él, y quiero cambiar el ancho del rectángulo cuando los personajes excedan el rectángulo.

¿Fue útil?

Solución

textwidth = -1 significa que

[...] El texto no se dividirá en varias líneas a menos que se aplique a través de una ruptura de línea explícita o un nuevo párrafo".

(QTextDocument :: TextWidth ())

Entonces, si quieres obtener la longitud de tu QGraphicsTextItem no puedes usar textWidth, pero en su lugar necesita la longitud real de la cadena dentro de esta QGraphicsTextItem. Mira esto QgraphicstextItem :: topLaIntext (), que devuelve un QString. Llamar size() en esa cadena.

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

Ahora tiene el número de caracteres en esta cadena y puede implementar una función de cambio de tamaño para que su rectángulo crezca, cuando hay demasiados caracteres. Es un tipo de solución, pero espero que ayude a resolver su problema.

Otros consejos

Encontré esta publicación deteniéndome en el mismo problema.

Estoy usando text->boundingRect().width()Para obtener el ancho.

Quizás ayuda a alguien

También puede crear una instancia QfontMetrics ([fuente de su qgraphicstextitem]) y llamar a su función de ancho (QString) para obtener el ancho de la cadena pasada en píxeles, si se dibuja en la fuente de fuente especificada/-size/-Weight. Solo obtener el recuento de caracteres solo es razonable cuando se usa una fuente monoespacada. En todos los demás casos no es una buena idea.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top