我一直在尝试找到一种方法来更改字体文件的行间距默认值,使用
QFont
、QFontMetrics
或类似的东西。我正在使用 QPainter::drawText
在边界矩形中绘制一些文本。
奇怪的是,
QFont
允许更改字体字距调整,甚至有一些拉伸操作和字母间距,但无法更改行之间的默认间距。我使用 QTextLayout
搜索并找到了一些部分解决方案,但似乎没有一个能正常工作。
我需要使用
QPainter
,因为我生成一个带有要使用 OpenGL 渲染的文本的纹理。
寻找更多想法让我尝试!
我发现我可以使用
QPainter
绘制一个 QStaticText
,它允许 HTML 文本格式,类似于 QTextDocument
。然而,CSS 样式并不像 QTextDocument
那样工作(有一个 bug 报告)。因此,仍然没有领先。
QFontMetrics
并不是专门为多行文本设计的。
使用
QTextDocument
。您可以用它打印多行和富文本,甚至使用 QPainter
。查看解决方案如何将 QPainter 与 QTextDocument 一起使用
看来这里能做的不多了。
QFontMetrics::lineSpacing
返回您需要的内容,但它是只读的。
它是字体高度和行距的总和。您可以调整高度 - 在
QFont
构造函数中设置。但你不能设置领先。
有些人在字符串末尾添加
\n
以增加行与行之间的间距,但这当然并不总是一个好的解决方案。