2015-04-28 7 views
6

Я пытаюсь найти способ изменить значение по умолчанию для интервала между файлами шрифта, используя QFont, QFontMetrics или что-то в этом роде. Я использую QPainter::drawText, чтобы нарисовать текст в ограничивающем прямоугольнике.QFont не допускает межстрочного интервала или может быть установлен вручную

Странно, что QFont позволяет изменять шрифт кернинга и даже имеет некоторое растягивающее действие и расстояние между буквами, но ничего не менять пространство по умолчанию между строками. Я искал и нашел некоторые частичные решения, используя QTextLayout, но ни один из них не работал должным образом.

Мне нужно использовать QPainter, потому что я генерирую текстуру с текстом, который будет отображаться с помощью OpenGL.

Ищите больше идей для меня, чтобы попробовать!

UPDATE

Я обнаружил, что я могу использовать QPainter рисовать QStaticText который позволяет форматирования текста HTML, похожий на QTextDocument. Тем не менее, стилизация CSS не работает, как в QTextDocument (есть bug report) ... Поэтому до сих пор нет лидеров, но я надеюсь, что это подведет меня на правильный путь.

решаемых

я получил то, что я хотел с помощью QTextDocument, как Михайло предложил. Link to solution

ответ

3

QFontMetrics не был разработан специально для многострочного текста.

Использование QTextDocument. Вы можете печатать многострочный и насыщенный текст с ним, даже используя QPainter. См. Решение, как use QPainter with QTextDocument

+0

Он работает, как и предполагалось. Действительно удивительный Михаил:. Спасибо за помощь! –

0

Похоже, что здесь не так много, что можно сделать.

QFontMetrics::lineSpacing возвращает то, что вам нужно, но только для чтения.

Это сумма высоты шрифта и ведущего. Вы можете отрегулировать высоту - установите его в конструкторе QFont. Но вы не можете установить лидерство.

Некоторые люди добавляют \n в конец строки, чтобы увеличить расстояние между строками, но, конечно, это не всегда хорошее решение.

+0

Благодарим за быстрый тент @demonplus. Я проверю документацию QFont и посмотрю, разрешило ли то, что вы предложили, решить мою проблему. Я отправлю назад результаты :) –

+0

Я не могу найти конструктор QFont, который принимает параметр высоты ... добавление новых символов линии испортит перенос слов, чтобы это не было для меня решением. Но еще раз спасибо за ваше время @demonplus;) –

+0

QFont :: QFont (const QString & family, int pointSize = -1, int weight = -1, bool italic = false) - когда вы измените pointSize, высота шрифта будет изменение также – demonplus

 Смежные вопросы

  • Нет связанных вопросов^_^