开发者

QLabel: interlinea/linespacing in WordWrap mode

开发者 https://www.devze.com 2022-12-28 15:37 出处:网络
How do I se开发者_StackOverflow社区t line height in QLabel when in WordWrap mode?Use HTML text: QString template = \"<p style=\\\"line-height:%1%\\\">%2<p>\";

How do I se开发者_StackOverflow社区t line height in QLabel when in WordWrap mode?


Use HTML text:

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

where myPercentage is like 60 - 80. You will get condensed lines in the WordWrap mode


There is no line spacing property in QLabel. You can change the widget font, which will change the line's height, but I suspect that is not what you want.

Line height is computed from the QFont of the widget and can be obtained by the QFontMetrics associated with the widget. Using this information, you may create your own widget that has a line spacing property (and a text wrap mode), but that represents a lot of low-level work.


You can also edit the HTML of the QLabel directly in Qt Designer.

  • Select the label in Qt Designer.
  • In the Property Editor, under the QLabel section, select the text property and press the ... button.
  • Select the "source" tab and edit the HTML from there.

Here are two examples that control the line spacing of a QLabel using HTML (tested in Qt 5.7). I am sure there are many more (and some better) ways to write the HTML, but this should be a good start.

Example 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>

This example is neater if the line spacing is the same for the whole paragraph.

Example 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>

This example allows you to control the spacing of each line individually. I had to make the height of the last line 100 to prevent Qt from cutting it in half. I assume it affects how Qt calculates the height of the label as a widget.

0

精彩评论

暂无评论...
验证码 换一张
取 消