Вопрос

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top