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空间的宽度,高度。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!