2009-08-26 12 views

Antwort

60

Sie können QFontMetrics Klasse verwenden - siehe width() Methode, die Ihnen die Breite eines bestimmten QString geben kann.

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

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

ein bisschen spät, aber vielleicht hilft es, jemanden zu

im paintEventO

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

Chears Alexander

5

Als Ergänzung zu der Antwort @ Paul, fand ich, dass Beim Malen von Text (Qt4.8 auf Linux) ist die Breite eines tatsächlich gemalten Textes im Vergleich zu der Breite, die QFontMetrics::boundingRect zurückgibt, oft aus. In meinen Fällen war das Gemälde oft zu breit.

Wenn Sie beim Malen von Text genaue Ergebnisse erzielen möchten (z. B. um Rechtecke zu bemaßen, die Sie um den Text zeichnen), verwenden Sie besser die boundingRect-Funktionen, die direkt von QPainter bereitgestellt werden.

+0

Die gleiche Situation unter OS X mit Qt 5.5.1 gefunden. Die Höhe war aus. Ich verwendete ein eigenständiges QFontMetrics, aber musste die Schriftart auf dem Maler einstellen und sein boundingRect direkt benutzen, um den Text genau zu messen. – kainjow