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

问题描述 投票:0回答:2

我一直在尝试找到一种方法来更改字体文件的行间距默认值,使用

QFont
QFontMetrics
或类似的东西。我正在使用
QPainter::drawText
在边界矩形中绘制一些文本。

奇怪的是,

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

我需要使用

QPainter
,因为我生成一个带有要使用 OpenGL 渲染的文本的纹理。

寻找更多想法让我尝试!


我发现我可以使用

QPainter
绘制一个
QStaticText
,它允许 HTML 文本格式,类似于
QTextDocument
。然而,CSS 样式并不像
QTextDocument
那样工作(有一个 bug 报告)。因此,仍然没有领先。

c++ qt fonts spacing fontmetrics
2个回答
3
投票

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

使用

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


0
投票

看来这里能做的不多了。

QFontMetrics::lineSpacing
返回您需要的内容,但它是只读的。

它是字体高度和行距的总和。您可以调整高度 - 在

QFont
构造函数中设置。但你不能设置领先。

有些人在字符串末尾添加

\n
以增加行与行之间的间距,但这当然并不总是一个好的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.