自适应宽度下测量高度
比如我想求字符串中最大的字符宽度,这个时候对每个字符的宽度求值肯定不是固定的,所以可以先用MAXFLOAT
做约束,自适应宽度,代码如下:文章来源:https://www.toymoban.com/news/detail-737633.html
QFont font;
QFontMetricsF fontMetrics(font);
QRectF textRect;
QRectF rect(0, 0, width, MAXFLOAT);
QRectF textRect = fontMetrics.boundingRect(rect, Qt::AlignTop | Qt::AlignLeft | Qt::TextWordWrap, text);
指定宽度下测量高度
某些情况下我想做文字的自动折行,指定了文本展示框的宽度之后,高度要通过折行策略达到自适应的效果:文章来源地址https://www.toymoban.com/news/detail-737633.html
QFont font;
QFontMetricsF fontMetrics(font);
QTextOption option;
option.setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere);
qreal y = 0;
qreal leading = fontMetrics.leading();
QStringList paragraphs = text.split("\n");
for (const QString ¶graph : paragraphs)
{
QTextLayout layout;
layout.setText(paragraph);
layout.setFont(font);
layout.setTextOption(option);
layout.beginLayout();
while (true)
{
QTextLine line = layout.createLine();
if (!line.isValid())
break;
line.setLineWidth(width);
line.setPosition(QPointF(0, y));
y += line.height() + leading;
}
layout.endLayout();
}
QRectF textRect = QRectF(0, 0, width, y);
到了这里,关于Qt 测量文字展示尺寸的两种方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!