QFontMetricsF Class
La classe QFontMetricsF fournit des informations sur les métriques des polices de caractères. Plus d'informations...
| En-tête : | #include <QFontMetricsF> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Gui)target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake : | QT += gui |
- Liste de tous les membres, y compris les membres hérités
- QFontMetricsF fait partie des classes de peinture et des classes implicitement partagées.
Note : Toutes les fonctions de cette classe sont réentrantes.
Fonctions publiques
| QFontMetricsF(const QFont &font) | |
| QFontMetricsF(const QFontMetrics &fontMetrics) | |
| QFontMetricsF(const QFont &font, const QPaintDevice *paintdevice) | |
| QFontMetricsF(const QFontMetricsF &fm) | |
| ~QFontMetricsF() | |
| qreal | ascent() const |
| qreal | averageCharWidth() const |
| QRectF | boundingRect(QChar ch) const |
| QRectF | boundingRect(const QString &text) const |
(since 6.3) QRectF | boundingRect(const QString &text, const QTextOption &option) const |
| QRectF | boundingRect(const QRectF &rect, int flags, const QString &text, int tabStops = 0, int *tabArray = nullptr) const |
| qreal | capHeight() const |
| qreal | descent() const |
| QString | elidedText(const QString &text, Qt::TextElideMode mode, qreal width, int flags = 0) const |
| qreal | fontDpi() const |
| qreal | height() const |
(since 6.3) qreal | horizontalAdvance(const QString &text, const QTextOption &option) const |
| qreal | horizontalAdvance(const QString &text, int length = -1) const |
| qreal | horizontalAdvance(QChar ch) const |
| bool | inFont(QChar ch) const |
| bool | inFontUcs4(uint ch) const |
| qreal | leading() const |
| qreal | leftBearing(QChar ch) const |
| qreal | lineSpacing() const |
| qreal | lineWidth() const |
| qreal | maxWidth() const |
| qreal | minLeftBearing() const |
| qreal | minRightBearing() const |
| qreal | overlinePos() const |
| qreal | rightBearing(QChar ch) const |
| QSizeF | size(int flags, const QString &text, int tabStops = 0, int *tabArray = nullptr) const |
| qreal | strikeOutPos() const |
| void | swap(QFontMetricsF &other) |
| QRectF | tightBoundingRect(const QString &text) const |
(since 6.3) QRectF | tightBoundingRect(const QString &text, const QTextOption &option) const |
| qreal | underlinePos() const |
| qreal | xHeight() const |
| bool | operator!=(const QFontMetricsF &other) const |
| QFontMetricsF & | operator=(QFontMetricsF &&other) |
| QFontMetricsF & | operator=(const QFontMetrics &other) |
| QFontMetricsF & | operator=(const QFontMetricsF &fm) |
| bool | operator==(const QFontMetricsF &other) const |
Description détaillée
Les fonctions QFontMetricsF calculent la taille des caractères et des chaînes de caractères pour une police donnée. Vous pouvez construire un objet QFontMetricsF avec une adresse QFont existante pour obtenir des mesures pour cette police. Si la police est modifiée ultérieurement, l'objet de métriques de police n'est pas mis à jour.
Une fois créé, l'objet fournit des fonctions permettant d'accéder aux métriques individuelles de la police, de ses caractères et des chaînes de caractères rendues dans la police.
Plusieurs fonctions agissent sur la police : ascent(), descent(), height(), leading() et lineSpacing() renvoient les propriétés de taille de base de la police. Les fonctions underlinePos(), overlinePos(), strikeOutPos() et lineWidth() renvoient les propriétés de la ligne qui souligne, surligne ou biffe les caractères. Ces fonctions sont toutes rapides.
Il existe également des fonctions qui opèrent sur l'ensemble des glyphes de la police : minLeftBearing(), minRightBearing() et maxWidth(). Ces fonctions sont nécessairement lentes, et nous recommandons de les éviter si possible.
Pour chaque caractère, vous pouvez obtenir son horizontalAdvance(), leftBearing(), et rightBearing(), et savoir s'il se trouve dans la police en utilisant inFont(). Vous pouvez également traiter le caractère comme une chaîne de caractères et utiliser les fonctions de chaîne de caractères.
Les fonctions de chaîne comprennent horizontalAdvance(), qui renvoie la largeur d'une chaîne en pixels (ou en points, pour une imprimante), boundingRect(), qui renvoie un rectangle suffisamment grand pour contenir la chaîne rendue, et size(), qui renvoie la taille de ce rectangle.
Exemple :
QFont font("times", 24); QFontMetricsF fm(font); qreal pixelsWide = fm.horizontalAdvance("What's the advance width of this text?"); qreal pixelsHigh = fm.height();
Voir également QFont, QFontInfo, et QFontDatabase.
Documentation des fonctions membres
[explicit] QFontMetricsF::QFontMetricsF(const QFont &font)
Construit un objet de métriques de police pour font.
Les métriques de la police seront compatibles avec le dispositif de peinture utilisé pour créer font.
L'objet de métriques de police contient les informations relatives à la police qui est passée dans le constructeur au moment de sa création, et n'est pas mis à jour si les attributs de la police sont modifiés ultérieurement.
Utilisez QFontMetricsF(const QFont &, QPaintDevice *) pour obtenir les métriques de police compatibles avec un certain dispositif de peinture.
QFontMetricsF::QFontMetricsF(const QFontMetrics &fontMetrics)
Construit un objet de mesure de police avec une précision en virgule flottante à partir de l'objet fontMetrics donné.
QFontMetricsF::QFontMetricsF(const QFont &font, const QPaintDevice *paintdevice)
Construit un objet de métrique de police pour font et paintdevice.
Les métriques de la police seront compatibles avec l'appareil de peinture passé. Si paintdevice est nullptr, les métriques seront compatibles avec l'écran, c'est-à-dire les métriques que vous obtenez si vous utilisez la police pour dessiner du texte sur un widgets ou pixmaps, et non sur un QPicture ou QPrinter.
L'objet "font metrics" contient les informations relatives à la police qui sont passées dans le constructeur au moment de sa création, et n'est pas mis à jour si les attributs de la police sont modifiés ultérieurement.
QFontMetricsF::QFontMetricsF(const QFontMetricsF &fm)
Construit une copie de fm.
[noexcept] QFontMetricsF::~QFontMetricsF()
Détruit l'objet "font metrics" et libère toutes les ressources allouées.
qreal QFontMetricsF::ascent() const
Renvoie l'ascension de la police.
L'ascension d'une police est la distance entre la ligne de base et la position la plus haute à laquelle les caractères s'étendent. Dans la pratique, certains concepteurs de polices enfreignent cette règle, par exemple lorsqu'ils placent plus d'un accent au sommet d'un caractère, ou pour tenir compte d'un certain caractère, de sorte qu'il est possible (bien que rare) que cette valeur soit trop petite.
Voir également descent().
qreal QFontMetricsF::averageCharWidth() const
Renvoie la largeur moyenne des glyphes de la police.
QRectF QFontMetricsF::boundingRect(QChar ch) const
Renvoie le rectangle de délimitation du caractère ch par rapport au point le plus à gauche de la ligne de base.
Notez que le rectangle englobant peut s'étendre à gauche de (0, 0), par exemple pour les polices en italique, et que la sortie du texte peut couvrir tous les pixels du rectangle englobant.
Notez que le rectangle s'étend généralement au-dessus et au-dessous de la ligne de base.
Voir également horizontalAdvance().
QRectF QFontMetricsF::boundingRect(const QString &text) const
Renvoie le rectangle de délimitation des caractères de la chaîne spécifiée par text. Le rectangle englobe toujours au moins l'ensemble des pixels que le texte couvrirait s'il était dessiné à (0, 0).
Notez que le rectangle délimité peut s'étendre à gauche de (0, 0), par exemple pour les polices en italique, et que la largeur du rectangle renvoyé peut être différente de celle renvoyée par la méthode horizontalAdvance().
Si vous souhaitez connaître la largeur anticipée de la chaîne (pour disposer un ensemble de chaînes les unes à côté des autres), utilisez plutôt horizontalAdvance().
Les caractères de retour à la ligne sont traités comme des caractères normaux, et non comme des retours à la ligne.
La hauteur du rectangle de délimitation est au moins aussi grande que la valeur renvoyée par height().
Voir aussi horizontalAdvance(), height() et QPainter::boundingRect().
[since 6.3] QRectF QFontMetricsF::boundingRect(const QString &text, const QTextOption &option) const
Renvoie le rectangle de délimitation des caractères de la chaîne spécifiée par text, tracé à l'aide de option. Le rectangle englobe toujours au moins l'ensemble des pixels que le texte couvrirait s'il était dessiné à (0, 0).
Notez que le rectangle délimité peut s'étendre à gauche de (0, 0), par exemple pour les polices en italique, et que la largeur du rectangle renvoyé peut être différente de celle renvoyée par la méthode horizontalAdvance().
Si vous souhaitez connaître la largeur anticipée de la chaîne (pour disposer un ensemble de chaînes les unes à côté des autres), utilisez plutôt horizontalAdvance().
Les caractères de retour à la ligne sont traités comme des caractères normaux, et non comme des retours à la ligne.
La hauteur du rectangle de délimitation est au moins aussi grande que la valeur renvoyée par height().
Cette fonction a été introduite dans Qt 6.3.
Voir aussi horizontalAdvance(), height() et QPainter::boundingRect().
QRectF QFontMetricsF::boundingRect(const QRectF &rect, int flags, const QString &text, int tabStops = 0, int *tabArray = nullptr) const
Renvoie le rectangle de délimitation des caractères dans le fichier text. Il s'agit de l'ensemble des pixels que le texte couvrirait s'il était dessiné en étant contraint au rectangle de délimitation spécifié par rect. Si rect est une référence à un objet nullptr, par exemple lors de la transmission d'une construction par défaut QRectF, le rectangle englobant ne sera pas contraint à la taille.
L'argument flags est le OU binaire des drapeaux suivants :
- Qt::AlignLeft s'aligne sur le bord gauche, sauf pour l'arabe et l'hébreu où il s'aligne sur le bord droit.
- Qt::AlignRight s'aligne sur le bord droit, sauf pour l'arabe et l'hébreu où il s'aligne sur la gauche.
- Qt::AlignJustify produit un texte justifié.
- Qt::AlignHCenter aligne horizontalement centré.
- Qt::AlignTop s'aligne sur le bord supérieur.
- Qt::AlignBottom s'aligne sur le bord inférieur.
- Qt::AlignVCenter aligne verticalement centré
- Qt::AlignCenter (==
Qt::AlignHCenter | Qt::AlignVCenter) - Qt::TextSingleLine ignore les caractères de retour à la ligne dans le texte.
- Qt::TextExpandTabs développe les tabulations (voir ci-dessous)
- Qt::TextShowMnemonic interprète "&x" comme étant x, c'est-à-dire souligné.
- Qt::TextWordWrap coupe le texte pour qu'il s'adapte au rectangle.
Qt::Horizontal L'alignement horizontal a pour valeur par défaut Qt::AlignLeft et l'alignement vertical a pour valeur par défaut Qt::AlignTop.
Si plusieurs drapeaux d'alignement horizontal ou plusieurs drapeaux d'alignement vertical sont activés, l'alignement résultant est indéfini.
Ces drapeaux sont définis dans Qt::AlignmentFlag.
Si Qt::TextExpandTabs est défini dans flags, le comportement suivant est utilisé pour interpréter les caractères de tabulation dans le texte :
- Si tabArray est non nul, il spécifie une séquence de positions de pixels terminées par 0 pour les tabulations dans le texte.
- Si tabStops est différent de zéro, il est utilisé comme espacement des tabulations (en pixels).
Notez que le rectangle de délimitation peut s'étendre à gauche de (0, 0), par exemple pour les polices en italique.
Les caractères de retour à la ligne sont traités comme des retours à la ligne.
Malgré la différence de hauteur des caractères, les hauteurs des rectangles de délimitation de "oui" et "oui" sont les mêmes.
Le rectangle délimité renvoyé par cette fonction est un peu plus grand que celui calculé par la fonction plus simple boundingRect(). Cette fonction utilise les paliers de police maximum left et right, ce qui est nécessaire pour aligner correctement le texte sur plusieurs lignes. En outre, fontHeight() et lineSpacing() sont utilisés pour calculer la hauteur, plutôt que la hauteur des caractères individuels.
Il s'agit d'une fonction surchargée.
Voir aussi horizontalAdvance(), QPainter::boundingRect() et Qt::Alignment.
qreal QFontMetricsF::capHeight() const
Renvoie la hauteur du chapeau de la police.
La hauteur du chapeau d'une police est la hauteur d'une lettre majuscule au-dessus de la ligne de base. Il s'agit en particulier de la hauteur des lettres capitales plates - telles que H ou I - par opposition aux lettres rondes telles que O, ou aux lettres pointues telles que A, qui peuvent toutes deux présenter un dépassement.
Voir également ascent().
qreal QFontMetricsF::descent() const
Renvoie la descente de la police.
La descente est la distance entre la ligne de base et le point le plus bas auquel les caractères s'étendent. (Dans la pratique, certains concepteurs de polices enfreignent cette règle, par exemple pour tenir compte d'un certain caractère, et il est donc possible (bien que rare) que cette valeur soit trop petite.
Voir également ascent().
QString QFontMetricsF::elidedText(const QString &text, Qt::TextElideMode mode, qreal width, int flags = 0) const
Si la chaîne text est plus large que width, elle renvoie une version élidée de la chaîne (c'est-à-dire une chaîne contenant "..."). Sinon, il renvoie la chaîne originale.
Le paramètre mode indique si le texte est élidé à gauche (par exemple, "...tech"), au milieu (par exemple, "Tr...ch") ou à droite (par exemple, "Trol...").
L'adresse width est spécifiée en pixels et non en caractères.
L'argument flags est facultatif et ne prend actuellement en charge que la valeur Qt::TextShowMnemonic.
La marque d'élide suit le layoutdirection. Par exemple, elle sera à droite du texte pour les mises en page de droite à gauche si le mode est Qt::ElideLeft, et à gauche du texte si le mode est Qt::ElideRight.
qreal QFontMetricsF::fontDpi() const
Renvoie le DPI de la police.
qreal QFontMetricsF::height() const
Renvoie la hauteur de la police.
Elle est toujours égale à ascent()+descent().
Voir aussi leading() et lineSpacing().
[since 6.3] qreal QFontMetricsF::horizontalAdvance(const QString &text, const QTextOption &option) const
Renvoie l'avance horizontale en pixels de text, tracée à l'aide de option.
L'avance est la distance appropriée pour dessiner un caractère suivant après text.
Cette fonction a été introduite dans Qt 6.3.
Voir aussi boundingRect().
qreal QFontMetricsF::horizontalAdvance(const QString &text, int length = -1) const
length Renvoie l'avance horizontale en pixels des premiers caractères de text. Si length est négatif (par défaut), la chaîne entière est utilisée. Toute la longueur de text est analysée, même si length est sensiblement plus court.
L'avance est la distance appropriée pour dessiner un caractère suivant après text.
Voir aussi boundingRect().
qreal QFontMetricsF::horizontalAdvance(QChar ch) const

Renvoie l'avance horizontale du caractère ch en pixels. Il s'agit d'une distance appropriée pour dessiner un caractère suivant après ch.
Certaines des mesures sont décrites dans l'image de droite. Les rectangles sombres centraux couvrent l'avance horizontale logique () de chaque caractère. Les rectangles pâles extérieurs couvrent les leftBearing() et rightBearing() de chaque caractère. Notez que les roulements de "f" dans cette police particulière sont tous deux négatifs, tandis que les roulements de "o" sont tous deux positifs.
Attention : Cette fonction produira des résultats incorrects pour les caractères arabes ou les marques de non-espacement au milieu d'une chaîne, car la formation des glyphes et le positionnement des marques qui se produisent lors du traitement des chaînes ne peuvent pas être pris en compte. Lors de la mise en œuvre d'un contrôle de texte interactif, utilisez plutôt QTextLayout.
Il s'agit d'une fonction surchargée.
Voir aussi boundingRect().
bool QFontMetricsF::inFont(QChar ch) const
Renvoie true si le caractère ch est un caractère valide dans la police ; sinon, renvoie false.
bool QFontMetricsF::inFontUcs4(uint ch) const
Renvoie true si le caractère donné par ch, encodé en UCS-4/UTF-32, est un caractère valide dans la police ; sinon, renvoie false.
qreal QFontMetricsF::leading() const
Renvoie l'espacement de la police.
Il s'agit de l'espacement naturel entre les lignes.
Voir aussi height() et lineSpacing().
qreal QFontMetricsF::leftBearing(QChar ch) const
Renvoie l'orientation gauche du caractère ch dans la police.
L'orientation gauche est la distance vers la droite du pixel le plus à gauche du caractère par rapport à l'origine logique du caractère. Cette valeur est négative si les pixels du caractère s'étendent à gauche de l'origine logique.
Voir horizontalAdvance() pour une description graphique de cette mesure.
Voir également rightBearing(), minLeftBearing() et horizontalAdvance().
qreal QFontMetricsF::lineSpacing() const
Renvoie la distance entre une ligne de base et la suivante.
Cette valeur est toujours égale à leading()+height().
Voir également height() et leading().
qreal QFontMetricsF::lineWidth() const
Renvoie la largeur des lignes soulignées et barrées, ajustée en fonction de la taille de la police.
Voir aussi underlinePos(), overlinePos(), et strikeOutPos().
qreal QFontMetricsF::maxWidth() const
Renvoie la largeur du caractère le plus large de la police.
qreal QFontMetricsF::minLeftBearing() const
Renvoie l'orientation minimale à gauche de la police.
Il s'agit du plus petit leftBearing(char) de tous les caractères de la police.
Notez que cette fonction peut être très lente si la police est grande.
Voir aussi minRightBearing() et leftBearing().
qreal QFontMetricsF::minRightBearing() const
Renvoie l'orientation minimale à droite de la police.
Il s'agit du plus petit rightBearing(char) de tous les caractères de la police.
Notez que cette fonction peut être très lente si la police est grande.
Voir aussi minLeftBearing() et rightBearing().
qreal QFontMetricsF::overlinePos() const
Renvoie la distance entre la ligne de base et l'endroit où un surlignage doit être dessiné.
Voir aussi underlinePos(), strikeOutPos() et lineWidth().
qreal QFontMetricsF::rightBearing(QChar ch) const
Renvoie l'orientation droite du caractère ch dans la police.
L'orientation à droite est la distance vers la gauche du pixel le plus à droite du caractère par rapport à l'origine logique d'un caractère ultérieur. Cette valeur est négative si les pixels du caractère s'étendent vers la droite du horizontalAdvance() du caractère.
Voir horizontalAdvance() pour une description graphique de cette mesure.
Voir également leftBearing(), minRightBearing() et horizontalAdvance().
QSizeF QFontMetricsF::size(int flags, const QString &text, int tabStops = 0, int *tabArray = nullptr) const
Renvoie la taille en pixels des caractères dans le fichier text.
L'argument flags est le OU binaire des drapeaux suivants :
- Qt::TextSingleLine ignore les caractères de retour à la ligne.
- Qt::TextExpandTabs développe les tabulations (voir ci-dessous)
- Qt::TextShowMnemonic interprète "&x" comme étant x, c'est-à-dire souligné.
- Qt::TextWordWrap casse le texte pour qu'il s'adapte au rectangle.
Ces options sont définies dans l'énumération Qt::TextFlag.
Si Qt::TextExpandTabs est défini dans flags, le comportement suivant est utilisé pour interpréter les caractères de tabulation dans le texte :
- Si tabArray est non nul, il spécifie une séquence de positions de pixels terminées par 0 pour les tabulations dans le texte.
- Si tabStops est différent de zéro, il est utilisé comme espacement des tabulations (en pixels).
Les caractères de retour à la ligne sont traités comme des sauts de ligne.
Remarque : malgré la différence de hauteur des caractères, les hauteurs des rectangles de délimitation de "Yes" et "yes" sont les mêmes.
Voir également boundingRect().
qreal QFontMetricsF::strikeOutPos() const
Renvoie la distance entre la ligne de base et l'endroit où la ligne de strikeout devrait être tracée.
Voir aussi underlinePos(), overlinePos(), et lineWidth().
[noexcept] void QFontMetricsF::swap(QFontMetricsF &other)
Remplace cette instance de métriques de polices par other. Cette opération est très rapide et n'échoue jamais.
QRectF QFontMetricsF::tightBoundingRect(const QString &text) const
Renvoie un rectangle de délimitation serré autour des caractères de la chaîne spécifiée par text. Le rectangle englobe toujours au moins l'ensemble des pixels que le texte couvrirait s'il était dessiné à (0, 0).
Notez que le rectangle délimité peut s'étendre à gauche de (0, 0), par exemple pour les polices en italique, et que la largeur du rectangle renvoyé peut être différente de celle renvoyée par la méthode horizontalAdvance().
Si vous souhaitez connaître la largeur anticipée de la chaîne (pour disposer un ensemble de chaînes les unes à côté des autres), utilisez plutôt horizontalAdvance().
Les caractères de retour à la ligne sont traités comme des caractères normaux, et non comme des retours à la ligne.
Voir aussi horizontalAdvance(), height() et boundingRect().
[since 6.3] QRectF QFontMetricsF::tightBoundingRect(const QString &text, const QTextOption &option) const
Renvoie un rectangle de délimitation serré autour des caractères de la chaîne spécifiée par text, tracé à l'aide de option. Le rectangle englobe toujours au moins l'ensemble des pixels que le texte couvrirait s'il était dessiné à (0,0).
Notez que le rectangle délimité peut s'étendre à gauche de (0,0), par exemple pour les polices en italique, et que la largeur du rectangle renvoyé peut être différente de celle renvoyée par la méthode horizontalAdvance().
Si vous souhaitez connaître la largeur anticipée de la chaîne (pour disposer un ensemble de chaînes les unes à côté des autres), utilisez plutôt horizontalAdvance().
Les caractères de retour à la ligne sont traités comme des caractères normaux, et non comme des retours à la ligne.
Cette fonction a été introduite dans Qt 6.3.
Voir aussi horizontalAdvance(), height() et boundingRect().
qreal QFontMetricsF::underlinePos() const
Renvoie la distance entre la ligne de base et l'endroit où un trait de soulignement doit être dessiné.
Voir aussi overlinePos(), strikeOutPos() et lineWidth().
qreal QFontMetricsF::xHeight() const
Renvoie la hauteur 'x' de la police. Il s'agit souvent, mais pas toujours, de la hauteur du caractère "x".
bool QFontMetricsF::operator!=(const QFontMetricsF &other) const
Renvoie true si les métriques de la police ne sont pas égales aux métriques de la police other; sinon, renvoie false.
Voir aussi operator==().
[noexcept] QFontMetricsF &QFontMetricsF::operator=(QFontMetricsF &&other)
Move-assigne other à cette instance QFontMetricsF.
QFontMetricsF &QFontMetricsF::operator=(const QFontMetrics &other)
Attribue other à cet objet.
QFontMetricsF &QFontMetricsF::operator=(const QFontMetricsF &fm)
Affecte les métriques de police fm à cet objet de métriques de police.
bool QFontMetricsF::operator==(const QFontMetricsF &other) const
Renvoie true si les métriques de police sont égales aux métriques de police other; sinon, renvoie false.
Deux métriques de police sont considérées comme égales si elles ont été construites à partir du même QFont et si les dispositifs de peinture pour lesquels elles ont été construites sont considérés comme compatibles.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.