QFont 不允许手动设置行距或行距

QFont doens't allow line spacing or leading to be set manually

我一直在尝试找到一种方法来更改字体文件的行间距默认值,使用 QFontQFontMetrics 或类似的东西。我正在使用 QPainter::drawText 在边界矩形中绘制一些文本。

奇怪的是 QFont 允许更改字体字距,甚至有一些拉伸操作和字母间距,但没有更改默认的 space 行间距。我搜索并找到了一些使用 QTextLayout 的部分解决方案,但 none 似乎工作正常。

我需要使用 QPainter,因为我生成了一个纹理,其中包含要使用 OpenGL 渲染的文本。

正在寻找更多想法供我尝试!

更新

我发现我可以使用 QPainter 绘制一个 QStaticText,它允许 HTML 文本格式,类似于 QTextDocument。但是,CSS 样式不像 QTextDocument 那样工作(有一个 bug report)...因此仍然没有领先,但我希望这能让我走上正轨。

已解决

我使用 QTextDocument 得到了我想要的东西,就像 Mykhaylo 所建议的那样。

看来能做的不多了

QFontMetrics::lineSpacing returns 您需要什么,但它是只读的。

它是字体高度和行距的总和。您可以调整高度 - 在 QFont 构造函数中设置它。但是不能设置行距。

有些人将 \n 添加到字符串的末尾以增加行之间的 space 但这当然并不总是一个好的解决方案。

QFontMetrics 不是专门为多行文本设计的。

使用QTextDocument。您可以使用它打印多行和富文本,甚至使用 QPainter。查看解决方案如何