搬運官方手冊:
詳細說明:
QFontMetrics類提供字體規格信息。QFontMetrics函數計算給定字體的字符和字符串的大小。
您可以通過三種方式創建QFontMetrics對象:
1、用QFont調用QFontMetrics構造函數會為屏幕兼容字體創建字體度量對象,即該字體不能為打印機字體。如果以后更改字體,則不會更新字體指標對象。
(注意:如果您使用打印機字體,則返回的值可能不正確。由於無法始終訪問打印機字體,因此,如果提供了打印機字體,則使用最近的屏幕字體。)
2、QWidget :: fontMetrics()返回小部件字體的字體指標。這等效於QFontMetrics(widget-> font())。如果稍后更改窗口小部件的字體,則不會更新字體指標對象。
3、QPainter :: fontMetrics()返回畫家當前字體的字體度量。如果稍后更改畫家的字體,則不會更新字體指標對象。
創建對象后,該對象將提供用於訪問字體,其字符以及以字體呈現的字符串的各個度量的功能。
有幾種對字體起作用的函數:ascent(),descent(),height(),leading()和lineSpacing()返回字體的基本大小屬性。 underlinePos(),overlinePos(),strikeOutPos()和lineWidth()函數返回下划線,上划線或刪除字符的行的屬性。這些功能都很快。
還有一些對字體的字形集起作用的函數:minLeftBearing(),minRightBearing()和maxWidth()。這些速度一定很慢,我們建議盡可能避免使用它們。
對於每個字符,您都可以使用inFont()獲得其width(),leftBearing()和rightBearing()並找出它是否在字體中。您也可以將字符視為字符串,並在其上使用字符串函數。
字符串函數包括width()(返回像素的字符串寬度(或點,對於打印機)),boundingRect(),返回足夠大的矩形以包含呈現的字符串的大小,以及size(),返回該矩形的大小。
例:
//通過此類可以獲取字體的的寬度長度
QFont font(“ times”,24);
QFontMetrics fm(font);
QString text = QString(tr("“此文本的寬度是多少?”"));
int pixelsWide = fm.width(text);
int pixelsHigh = fm.height(text);
//或者是樣式設置的字體,
QLable *titleLable = new QLable(this);
QString title = tr("tips is a demo");
titleLable->setText(title);
titleLablel->setStyleSheet(QString("QLabel{color:#333333; font-size: %0px; font-family:Microsoft YaHei;}").arg(QString::number(_S(14))));
QFontMetrics fm(titleLablel->font());
titleLable->setFixedWidth(fm.width(title));
獲取text的寬度,高度,以此動態調整 窗口or空間的寬度,高度。