2009-08-26 23 views

Respuesta

60

Puede usar la clase QFontMetrics; consulte el método width() que le puede dar el ancho de un QString dado.

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

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

un poco tarde, pero tal vez ayuda a alguien

en el paintEvent

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

Chears Alexander

5

Como complemento a la respuesta por @ Pablo, he encontrado que al pintar texto (Qt4.8 en Linux), el ancho de un texto pintado realmente en comparación con el ancho de lo que QFontMetrics::boundingRect devuelve a menudo está desactivado. En mis casos, la pintura a menudo era demasiado amplia.

Si desea resultados precisos al pintar texto (por ejemplo, para dimensionar rectángulos dibuje texto), mejor utilice las funciones boundingRect provistas directamente por QPainter.

+0

Encontré la misma situación en OS X con Qt 5.5.1. La altura estaba apagada. Estaba usando un QFontMetrics independiente, pero necesitaba establecer la fuente en el pintor y usar su boundingRect directamente para medir el texto con precisión. – kainjow

Cuestiones relacionadas