2009-09-16 57 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