一.描述
QFontMetrics提供关于字体的指标信息。
QFontMetrics的函数用于计算给定字体的字符和字符串的大小。有三种方法可以创建QFontMetrics对象:
- 用QFont调用QFontMetrics构造函数会为屏幕兼容字体创建QFontMetrics对象,即字体不能是打印机字体。
- QWidget::fontMetrics()返回小部件字体的QFontMetrics。这相当于QFontMetrics(widget->font())。
- QPainter::fontMetrics()返回painter当前字体的QFontMetrics
一旦创建QFontMetrics对象后,该对象提供函数来访问字体、字符和呈现的字符串的各个度量。
有几种对字体进行操作的函数:ascent() ,descent() ,height() ,leading() 和lineSpacing() 返回字体的基本大小属性。 underlinePos() ,overlinePos() ,strikeOutPos() 和lineWidth() 函数返回下划线,上划线或删除字符的行的属性。 这些功能都很快。
还有一些对字体的字形集起作用的函数:minLeftBearing() ,minRightBearing() 和maxWidth() 。 这些速度一定很慢,我们建议尽可能避免使用它们。
对于每个字符,您可以获得它的horizontalAdvance()、leftBearing()和rightBearing(),并使用inFont()查明它是否在字体中。您也可以将字符视为字符串,并在其上使用字符串函数。
字符串函数包括horizontalAdvance(),用于返回像素(或点,用于打印机)的字符串宽度,boundingRect(),用于返回一个足够大的矩形,以包含已呈现的字符串,以及size(),用于返回矩形的大小。
例子:
QFont font("times", 24);
QFontMetrics fm(font);
int pixelsWide = fm.horizontalAdvance("What's the width of this text?");
int pixelsHigh = fm.height();
另请参见QFont,QFontInfo,QFontDatabase和 Character Map Example。