2009-08-26 30 views

回答

60

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

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

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

有点晚,但也许它可以帮助别人

中的paintEvent

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

CHEARS亚历山大

5

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

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

+0

在Qt 5.5.1的OS X上发现了相同的情况。高度已关闭。我使用独立的QFontMetrics,但需要在画家上设置字体,并直接使用boundingRect来精确测量文字。 – kainjow