Получение длины 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. Просто получить количество символов разумно только при использовании моноширинного шрифта. Во всех остальных случаях это не очень хорошая идея.