Получение длины qgraphicstextitem?
-
27-10-2019 - |
Вопрос
Есть ли в любом случае, чтобы рассчитать длину текста, когда TextWidth = -1
?.
У меня есть прямоугольник с QGraphicsTextItem
В нем, и я хочу изменить ширину прямоугольника, когда символы превышают прямоугольник.
Решение
TextWidth = -1 означает, что
«[...] Текст не будет разбит на несколько строк, если он не будет применен через явный разрыв строки или новый абзац».
(QTextDocument :: TextWidth ())
Итак, если вы хотите получить длину своей QGraphicsTextItem
Вы не можете использовать textWidth
, но вместо этого вам нужна фактическая длина строки в этом QGraphicsTextItem
. Анкет Посмотри на Qgraphicstextitem :: toplaintext (), который возвращает QString. Вызов size()
на этой строке.
int length = my_graphics_text_item.toPlainText().size()
Теперь у вас есть количество символов в этой строке, и вы можете реализовать функцию изменения размера, чтобы ваш прямоугольник растут, когда слишком много символов. Это своего рода обходной путь, но я надеюсь, что это поможет решить вашу проблему.
Другие советы
Я нашел этот пост, остановившись на той же проблеме.
я использую text->boundingRect().width()
Чтобы получить ширину.
Возможно, это помогает кому -либо
Вы также можете создать экземпляр Qfontmetrics ([[Font of Your qgraphicStextItem])) и вызов его функции ширины (QSTRING), чтобы получить ширину пропущенной строки в пикселях, если бы она была проведена в указанной FontFamily/-size/-Weight. Просто получение количества символов является разумным только при использовании моносированного шрифта. Во всех других случаях это не очень хорошая идея.