2009-08-26 8 views
35

Qtフレームワークを使用して、特定のフォント/スタイルでレンダリングされたテキストの幅をピクセル単位で測定するにはどうすればよいですか?Qtでのテキスト幅の測定

答えて

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

、おそらくそれは@Paulによって解答に加えたようpaintEvent

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

Chearsアレクサンダー

5

の誰か

に役立ちます、私がことがわかりましたテキストをペイントするとき(Qt4.8 on Linux)、実際にペイントされたテキストの幅とQFontMetrics::boundingRectの幅が比較されない場合があります。私の場合は、絵が広すぎることがよくありました。

テキストをペイントするときに正確な結果が得られるようにするには、QPainterで直接提供されるboundingRect関数を使用することをお勧めします。

+0

Qt 5.5.1でOS Xで同じ状況が見つかりました。高さは落ちていた。私はスタンドアロンのQFontMetricsを使用していましたが、ペインタにフォントを設定し、boundingRectを使ってテキストを正確に測定する必要がありました。 – kainjow

関連する問題