QFont 不允许手动设置行距或行距
QFont doens't allow line spacing or leading to be set manually
我一直在尝试找到一种方法来更改字体文件的行间距默认值,使用 QFont
、QFontMetrics
或类似的东西。我正在使用 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
。查看解决方案如何
我一直在尝试找到一种方法来更改字体文件的行间距默认值,使用 QFont
、QFontMetrics
或类似的东西。我正在使用 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
。查看解决方案如何