首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么QFontMetrics::lineSpacing()比字符边界框的高度小?

为什么QFontMetrics::lineSpacing()比字符边界框的高度小?
EN

Stack Overflow用户
提问于 2012-11-18 01:07:39
回答 1查看 1K关注 0票数 3

这发生在Linux上。

在执行此代码时(我在小部件的paint事件中绘制)会出现问题:

代码语言:javascript
复制
painter.drawText(0, 0, 1000, 1000, 0, QString("0"), &charBoundingBox);
qDebug() << "bounding box height" << charBoundingBox.height();
qDebug() << "lineSpacing" << painter.fontMetrics().lineSpacing();
qDebug() << "leading" << painter.fontMetrics().leading();
qDebug() << "height" << painter.fontMetrics().height();
qDebug() << painter.font();

它输出:

代码语言:javascript
复制
bounding box height 11 
lineSpacing 7 
leading -1 
height 8 
QFont( "Digital-7,10,-1,5,50,0,0,0,0,0" ) 

请注意,字符的边框高度为11,而行距为7。这在一定程度上是因为前导是负的,但即使没有它,字体高度仍然很小。

Qt如何计算它返回的字符边界框?它的高度显然不是由fontMetrics::heightfontMetrics::leading得出的。

EN

回答 1

Stack Overflow用户

发布于 2012-11-18 09:45:34

不能保证绘制器返回的边界框的高度与字体高度相同。此外,行距是字体的高度和行距的总和。如果字体的行距为负数,则行距将小于高度。

此外,为了确保您使用的是正确的度量标准,您可能应该使用painter.fontMetrics()而不是构造字体(QFontMetrics)。

在任何情况下,为了确保在您的情况下发生上述哪种情况,您应该分别打印字体行距和字体高度(使用painter.fontMetrics())。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13432746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档