QFont pixelSize和QFontMetrics高度给出不同的值

时间:2014-02-03 13:06:23

标签: qt fonts size pixel

我正在创建一个自定义标签,并希望它有一个13像素的高文本,并将标签的最大高度设置为14。

textFont.setFamily("Frutiger LT Com 55 Roman");
textFont.setPixelSize(13);
setFont(textFont);
QFontMetrics fm(this->font());
QFontInfo fi(this->font());
qDebug()<<"QFontMetrics"<<fm.height()<<fm.xHeight()<<fm.ascent()<<fm.descent();
qDebug()<<"QFontInfo"<<fi.exactMatch()<<fi.family()<<fi.pixelSize();

这就是我得到的

QFontMetrics 16 3 13 3 
QFontInfo true "Frutiger LT Com 55 Roman" 13

当我将pixelSize设置为“13”时,为什么我将高度设为“16”? 因为我的标签上的文字被从底部剪裁(垂直居中对齐)。

QFontMetrics“height()”定义表示height = ascent + descent + 1(基线)。但是你可以看到上面的ascent = 13,descent = 3和height = 16。这与“height()”函数定义相矛盾。

1 个答案:

答案 0 :(得分:3)

这似乎是Qt 5文档中的错误(有人忘记更改一些Doxygen评论)。

删除+1的提交在这里: https://qt.gitorious.org/qt/qtbase/commit/cb8445f0323b0eefbb04f1d8adad81a00b53abd8

提交说:

  

从字体高度计算中删除历史+1

     

历史上,我们将字体高度计算为上升+下降+ 1。在Qt   4,添加一个补丁来解决这个问题,从中减去1   字体引擎的下降。我们现在删除+1和工作   变通。