Получение длины QGraphicsTextItem?

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

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

3 ответа

Решение

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

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

( QTextDocument:: textWidth ())

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

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

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

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

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

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

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

Другие вопросы по тегам