2009-09-16 27 views
2

为什么下一个函数返回0? (我的环境是:Windows Vista中,VC++ 9,Qt4.5)QFontMetrics :: leading()返回0

 

int func() 
{ 
    QPushButton button("Blah blah"); 
    QFontMetrics fm = button.fontMetrics(); 
    return fm.leading(); 
} 
 

调用为 “fm.height()” 返回合理的结果(16 PX在我的情况)。

调用“fm.lineSpacing()”返回与“fm.height()”相同的结果。

调用“fm.boundingRect(QRect(),0,”第一行\ n第二行\ n第三行“)。height();”返回16 * 3,即再次不包括在结果中的行间距...

这是不正确的用法从我身边还是别的什么?

回答

1

根据该文档lineSpacing()总是等于height() + leading()

height()总是等于ascent()+descent()+1(1是基线)。

here领先的是“垂直文本行之间的空间 - 名字来自应用于机械印刷工艺可用于分离文本行的铅物理片”

那么,什么字体是你使用,并且它是否使用零大小的领先?

+0

我对按钮的标题(Qt术语中的按钮文本)使用预定义字体(Vista系统按钮的默认字体)。当我将多行文本设置为按钮时,每行文本与相邻行之间都有一些空格(非零空格)。所以,我不明白,为什么领先()返回“0”,但确实我有一些线之间的间距(我无法计算思想领先()调用)... – cybevnm 2009-09-17 08:55:53