以Qt测量文本宽度

时间:2009-08-26 21:12:22

标签: c++ qt text

使用Qt框架,如何测量使用给定字体/样式呈现的文本的宽度(以像素为单位)?

4 个答案:

答案 0 :(得分:74)

您可以使用QFontMetrics类 - 请参阅width()方法,该方法可以为您提供给定QString的宽度。

QFont myFont(fontName, fontSize);;
QString str("I wonder how wide this is?");

QFontMetrics fm(myFont);
int width=fm.width(str);

答案 1 :(得分:12)

在paintEvent

QString text("text");
QFontMetrics fm = painter.fontMetrics();
int width = fm.width(text);

答案 2 :(得分:6)

作为@Paul答案的补充,我发现在绘制文本时(Linux上的Qt4.8),实际绘制的文本的宽度与QFontMetrics::boundingRect返回的宽度相比通常是关闭的。在我的情况下,这幅画往往太宽。

如果您想在绘制文本时获得准确的结果(例如,在文本周围绘制尺寸矩形),请更好地使用boundingRect直接提供的QPainter函数。

答案 3 :(得分:0)

从Qt 5.11开始,您必须使用horizontalAdvance()类的QFontMetrics方法而不是width()width() is now obselete.

QFont myFont(fontName, fontSize);;
QString str("I wonder how wide this is?");

QFontMetrics fm(myFont);
int width=fm.horizontalAdvance(str);