使用Qt框架,如何测量使用给定字体/样式呈现的文本的宽度(以像素为单位)?
答案 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);