¿Obtener la longitud de QgraphicStextItem?
-
27-10-2019 - |
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.
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.