2009-08-26 3 views

Répondre

60

Vous pouvez utiliser la classe QFontMetrics - voir la méthode width() qui peut vous donner la largeur d'un QString donné.

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

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

un peu en retard, mais peut-être il aide à quelqu'un

dans le paintEvent

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

Chears Alexander

5

En complément de la réponse par @ Paul, je trouve que lors de la peinture de texte (Qt4.8 sur linux), la largeur d'un texte réellement peint par rapport à la largeur de ce que QFontMetrics::boundingRect renvoie est souvent éteint. Dans mes cas, la peinture était souvent trop large.

Si vous voulez des résultats précis lorsque vous peignez du texte (par exemple pour coter des rectangles, vous dessinez autour du texte), mieux utiliser les fonctions boundingRect fournies directement par QPainter.

+0

Trouvé la même situation sur OS X avec Qt 5.5.1. La hauteur était éteinte. J'utilisais un QFontMetrics autonome mais j'avais besoin de définir la police sur le peintre et d'utiliser son boundingRect directement pour mesurer avec précision le texte. – kainjow