QLabel: межстрочный интервал / межстрочный интервал в режиме WordWrap - PullRequest
3 голосов
/ 01 мая 2010

Как установить высоту строки в QLabel в режиме WordWrap?

Ответы [ 3 ]

4 голосов
/ 11 апреля 2014

Использовать текст HTML:

QString template = "<p style=\"line-height:%1%\">%2<p>";
QString targetText = template.arg(myPercentage).arg(myTex);
QLabel *l = new QLabel(targetText, this);

где myPercentage равен 60 - 80. Вы получите сжатые строки в режиме WordWrap

4 голосов
/ 03 мая 2010

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

Высота строки вычисляется из QFont виджета и может быть получена с помощью QFontMetrics, связанного с виджетом. Используя эту информацию, вы можете создать свой собственный виджет, который имеет свойство межстрочного интервала (и режим переноса текста), но представляет собой многоуровневую работу.

1 голос
/ 08 августа 2017

Вы также можете редактировать HTML QLabel непосредственно в Qt Designer.

  • Выберите метку в Qt Designer.
  • В редакторе свойств в разделе QLabel выберите свойство text и нажмите кнопку ....
  • Выберите вкладку «источник» и отредактируйте оттуда HTML.

Вот два примера, которые управляют межстрочным интервалом QLabel с использованием HTML (протестировано в Qt 5.7). Я уверен, что есть еще много (и некоторые лучшие) способы написания HTML, но это должно стать хорошим началом.

Пример 1

<html><head/><body>
<p style="line-height:120"><span>
This is the first line of the label.<br>
This is the second line.<br>
This is the third and final line.
</span></p>
</body></html>

Этот пример более точный, если межстрочный интервал одинаков для всего абзаца.

Пример 2

<html><head/><body>
<p style="line-height:20"><span>This is the first line of the label.</span></p>
<p style="line-height:20"><span>This is the second line.</span></p>
<p style="line-height:100"><span>This is the third and final line.</span></p>
</body></html>

Этот пример позволяет вам контролировать интервал каждой строки в отдельности. Мне нужно было сделать высоту последней строки 100, чтобы Qt не разрезал ее пополам. Я предполагаю, что это влияет на то, как Qt вычисляет высоту надписи как виджета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...