在Qt中测量文字宽度

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

你可以使用QFontMetrics类 – 请参阅width()方法,它可以给你一个给定的QString的宽度。

QFont myFont(fontName, fontSize);; QString str("I wonder how wide this is?"); QFontMetrics fm(myFont); int width=fm.width(str); 

有点晚了,但也许有助于某人

在paintEvent中

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

Chears亚历山大

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

如果在绘制文本时需要精确的结果(例如绘制围绕文本绘制的维矩形),最好使用由QPainter直接提供的boundingRect函数。