2009-09-16 4 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 точек в моем случае).

Вызов «fm.lineSpacing()» возвращает тот же результат, что и «fm.height()».

Вызов "fm.boundingRect (QRect(), 0," первая строка \ n вторая строка \ n третья строка "). Height();" возвращает 16 * 3, т. е. снова межстрочный интервал, не включенный в результат ...

Это неправильное использование с моей стороны или что-то еще?

ответ

1

Согласно документации lineSpacing() всегда равен height() + leading()

height() всегда равен ascent()+descent()+1 (1 для базовой линии).

От here ведущих является «пространство по вертикали между строками текста - название происходит от физического куска свинца, который используется для использования в механическом процессе печати для разделения строк текста»

Итак, какой шрифт вы используя, и использует ли он нулевой размер?

+0

Я использую предопределенный шрифт (шрифт по умолчанию для кнопок в системе Vista) для титров кнопок (текст кнопок в терминологии Qt). Когда я устанавливаю многострочный текст на кнопку, каждая строка текста отделена от соседних строк некоторым пространством (ненулевое пространство). Итак, я не могу понять, почему leading() возвращает «0», но на самом деле у меня есть некоторый интервал между строками (который я не могу вычислить calling leading()) ... – cybevnm

Смежные вопросы