Получение длины QGraphicsTextItem? - PullRequest
1 голос
/ 01 февраля 2011

Есть ли способ вычислить длину текста, когда TextWidth = -1?.

У меня есть прямоугольник с QGraphicsTextItem, и я хочу изменить ширину прямоугольника, когда символы превышают прямоугольник.

Ответы [ 3 ]

5 голосов
/ 15 декабря 2014

Я нашел этот пост, остановившись на той же проблеме.

Я использую text->boundingRect().width(), чтобы получить ширину.

Возможно, это кому-нибудь поможет

0 голосов
/ 25 июня 2011

Вы также можете создать экземпляр QFontMetrics ([font вашего QGraphicsTextItem]) и вызвать его функцию width (QString), чтобы получить ширину передаваемой строки в пикселях, если бы она была нарисована в указанном fontfamily / -size / -weight,Просто получить количество символов разумно только при использовании моноширинного шрифта.Во всех остальных случаях это не очень хорошая идея.

0 голосов
/ 01 февраля 2011

textWidth = -1 означает, что

"[...] текст не будет разбит на несколько строк, если он не будет принудительно введен через явный разрыв строки или новый абзац."

( QTextDocument :: textWidth () )

Итак, если вы хотите получить длину вашего QGraphicsTextItem, вы не можете использовать textWidth, но вместо этого вам нужна фактическая длина строки в этом QGraphicsTextItem.Взгляните на QGraphicsTextItem :: toPlainText () , который возвращает QString.Вызовите size() для этой строки.

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

Теперь у вас есть количество символов в этой строке и вы можете реализовать функцию изменения размера для увеличения прямоугольника, когда символов слишком много.Это своего рода обходной путь, но я надеюсь, что он поможет решить вашу проблему.

...