En utilisant le framework Qt, comment mesurer la largeur (en pixels) d'un morceau de texte rendu avec une police/un style donné?
Depuis Qt 5.11, vous devez utiliser horizontalAdvance()
méthode de QFontMetrics
class au lieu de width()
. width()
est maintenant obsolète.
QFont myFont(fontName, fontSize);;
QString str("I wonder how wide this is?");
QFontMetrics fm(myFont);
int width=fm.horizontalAdvance(str);
Vous pouvez utiliser QFontMetrics class - voir la méthode width () qui peut vous donner la largeur d'une QString donnée.
QFont myFont(fontName, fontSize);;
QString str("I wonder how wide this is?");
QFontMetrics fm(myFont);
int width=fm.width(str);
Dans le paintEvent
QString text("text");
QFontMetrics fm = Painter.fontMetrics();
int width = fm.width(text);
En complément de la réponse de @Paul, j'ai trouvé que lors de la peinture de texte (Qt4.8 sous Linux), la largeur d'un texte réellement peint par rapport à la largeur de quoi QFontMetrics::boundingRect
renvoie souvent désactivé. 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 que vous dessinez autour du texte), utilisez mieux les fonctions boundingRect
fournies directement par QPainter
.