首页 文章

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

提问于
浏览
3

我正在创建一个自定义标签,并希望它有一个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 回答

  • 3

    这似乎是Qt 5文档中的错误(有人只是忘了改变一些Doxygen评论) .

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

    提交说:

    从字体高度计算中删除历史1从历史上看,我们已经将字体高度计算为上升下降1.在Qt 4中,添加了一个补丁,通过从字体引擎的下降中减去1来解决此问题 . 我们现在删除1和解决方法 .

相关问题