Qt -- 淺析QFontMetrics 獲取字體寬度,高度


搬運官方手冊:

詳細說明:
  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空間的寬度,高度。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM