En utilisant le framework Qt, comment mesurer la largeur (en pixels) d'un texte rendu avec une police/un style donné?Mesure de la largeur du texte en Qt
35
A
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
.
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