QFontMetricsF Class
La clase QFontMetricsF proporciona información sobre métricas de fuentes. Más...
| Cabecera: | #include <QFontMetricsF> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui)target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
- Lista de todos los miembros, incluyendo los heredados
- QFontMetricsF es parte de Painting Classes y Implicitly Shared Classes.
Nota: Todas las funciones de esta clase son reentrantes.
Funciones Públicas
| 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 |
Descripción Detallada
Las funciones QFontMetricsF calculan el tamaño de caracteres y cadenas para una fuente dada. Se puede construir un objeto QFontMetricsF con un QFont existente para obtener métricas para esa fuente. Si la fuente se modifica posteriormente, el objeto métricas de fuente no se actualiza.
Una vez creado, el objeto proporciona funciones para acceder a las métricas individuales de la fuente, sus caracteres, y para las cadenas renderizadas en la fuente.
Hay varias funciones que operan sobre la fuente: ascent(), descent(), height(), leading() y lineSpacing() devuelven las propiedades básicas de tamaño de la fuente. Las funciones underlinePos(), overlinePos(), strikeOutPos() y lineWidth(), devuelven las propiedades de la línea que subraya, sobretraza o tacha los caracteres. Todas estas funciones son rápidas.
También hay algunas funciones que operan sobre el conjunto de glifos de la fuente: minLeftBearing(), minRightBearing() y maxWidth(). Estas funciones son necesariamente lentas, por lo que recomendamos evitarlas si es posible.
Para cada carácter, puede obtener sus horizontalAdvance(), leftBearing() y rightBearing(), y averiguar si está en la fuente utilizando inFont(). También puede tratar el carácter como una cadena y utilizar las funciones de cadena.
Las funciones de cadena incluyen horizontalAdvance(), para devolver el ancho de una cadena en píxeles (o puntos, para una impresora), boundingRect(), para devolver un rectángulo lo suficientemente grande como para contener la cadena renderizada, y size(), para devolver el tamaño de ese rectángulo.
Ejemplo:
QFont font("times", 24); QFontMetricsF fm(font); qreal pixelsWide = fm.horizontalAdvance("What's the advance width of this text?"); qreal pixelsHigh = fm.height();
Véase también QFont, QFontInfo, y QFontDatabase.
Documentación de las funciones miembro
[explicit] QFontMetricsF::QFontMetricsF(const QFont &font)
Construye un objeto de métrica de fuente para font.
Las métricas de la fuente serán compatibles con el paintdevice utilizado para crear font.
El objeto de métricas de fuente contiene la información de la fuente que se pasa en el constructor en el momento de su creación, y no se actualiza si los atributos de la fuente se cambian más tarde.
Utilice QFontMetricsF(const QFont &, QPaintDevice *) para obtener las métricas de fuente compatibles con un determinado dispositivo de pintura.
QFontMetricsF::QFontMetricsF(const QFontMetrics &fontMetrics)
Construye un objeto de métrica de fuente con precisión de coma flotante a partir del objeto fontMetrics dado.
QFontMetricsF::QFontMetricsF(const QFont &font, const QPaintDevice *paintdevice)
Construye un objeto de métrica de fuente para font y paintdevice.
Las métricas de la fuente serán compatibles con el paintdevice pasado. Si el paintdevice es nullptr, las métricas serán compatibles con la pantalla, es decir, las métricas que se obtienen si se utiliza la fuente para dibujar texto en un widgets o pixmaps, no en un QPicture o QPrinter.
El objeto métricas de fuente contiene la información de la fuente que se pasa en el constructor en el momento en que se crea, y no se actualiza si los atributos de la fuente se cambian más tarde.
QFontMetricsF::QFontMetricsF(const QFontMetricsF &fm)
Construye una copia de fm.
[noexcept] QFontMetricsF::~QFontMetricsF()
Destruye el objeto de métricas de fuentes y libera todos los recursos asignados.
qreal QFontMetricsF::ascent() const
Devuelve el ascendente de la fuente.
El ascendente de una fuente es la distancia desde la línea de base hasta la posición más alta a la que se extienden los caracteres. En la práctica, algunos diseñadores de fuentes rompen esta regla, por ejemplo, cuando ponen más de un acento encima de un carácter, o para acomodar un determinado carácter, por lo que es posible (aunque raro) que este valor sea demasiado pequeño.
Véase también descent().
qreal QFontMetricsF::averageCharWidth() const
Devuelve la anchura media de los glifos de la fuente.
QRectF QFontMetricsF::boundingRect(QChar ch) const
Devuelve el rectángulo delimitador del carácter ch relativo al punto más a la izquierda de la línea base.
Tenga en cuenta que el rectángulo delimitador puede extenderse a la izquierda de (0, 0), por ejemplo para fuentes en cursiva, y que la salida de texto puede cubrir todos los píxeles del rectángulo delimitador.
Tenga en cuenta que el rectángulo suele extenderse tanto por encima como por debajo de la línea base.
Véase también horizontalAdvance().
QRectF QFontMetricsF::boundingRect(const QString &text) const
Devuelve el rectángulo delimitador de los caracteres de la cadena especificada por text. El rectángulo delimitador siempre cubre al menos el conjunto de píxeles que cubriría el texto si se dibujara en (0, 0).
Tenga en cuenta que el rectángulo delimitador puede extenderse a la izquierda de (0, 0), por ejemplo para fuentes en cursiva, y que la anchura del rectángulo devuelto puede ser diferente de la que devuelve el método horizontalAdvance().
Si desea conocer el ancho de avance de la cadena (para disponer un conjunto de cadenas una junto a otra), utilice horizontalAdvance() en su lugar.
Los caracteres de nueva línea se procesan como caracteres normales, no como saltos de línea.
La altura del rectángulo delimitador es al menos tan grande como el valor devuelto height().
Véase también horizontalAdvance(), height() y QPainter::boundingRect().
[since 6.3] QRectF QFontMetricsF::boundingRect(const QString &text, const QTextOption &option) const
Devuelve el rectángulo delimitador de los caracteres de la cadena especificada por text trazados mediante option. El rectángulo delimitador siempre cubre al menos el conjunto de píxeles que cubriría el texto si se dibujara en (0, 0).
Tenga en cuenta que el rectángulo delimitador puede extenderse a la izquierda de (0, 0), por ejemplo para fuentes en cursiva, y que la anchura del rectángulo devuelto puede ser diferente de la que devuelve el método horizontalAdvance().
Si desea conocer el ancho de avance de la cadena (para disponer un conjunto de cadenas una junto a otra), utilice horizontalAdvance() en su lugar.
Los caracteres de nueva línea se procesan como caracteres normales, no como saltos de línea.
La altura del rectángulo delimitador es al menos tan grande como el valor devuelto height().
Esta función se introdujo en Qt 6.3.
Véase también horizontalAdvance(), height() y QPainter::boundingRect().
QRectF QFontMetricsF::boundingRect(const QRectF &rect, int flags, const QString &text, int tabStops = 0, int *tabArray = nullptr) const
Devuelve el rectángulo delimitador de los caracteres en la dirección text. Se trata del conjunto de píxeles que cubriría el texto si se dibujara restringido al rectángulo delimitador especificado por rect. Si rect es una referencia a un objeto nullptr, por ejemplo cuando se pasa un QRectF construido por defecto, el rectángulo delimitador no se restringirá al tamaño.
El argumento flags es el OR a nivel de bits de los siguientes indicadores:
- Qt::AlignLeft se alinea con el borde izquierdo, excepto para el árabe y el hebreo, en los que se alinea con el derecho.
- Qt::AlignRight se alinea al borde derecho, excepto en árabe y hebreo, en los que se alinea a la izquierda.
- Qt::AlignJustify produce texto justificado.
- Qt::AlignHCenter alinea horizontalmente centrado.
- Qt::AlignTop se alinea en el borde superior.
- Qt::AlignBottom alinea al borde inferior.
- Qt::AlignVCenter alinea verticalmente centrado
- Qt::AlignCenter (==
Qt::AlignHCenter | Qt::AlignVCenter) - Qt::TextSingleLine ignora los caracteres de nueva línea en el texto.
- Qt::TextExpandTabs expande los tabuladores (véase más abajo)
- Qt::TextShowMnemonic interpreta "&x" como x; es decir, subrayado.
- Qt::TextWordWrap rompe el texto para ajustarlo al rectángulo.
Qt::Horizontal alineación por defecto Qt::AlignLeft y alineación vertical por defecto Qt::AlignTop.
Si se activan varias de las banderas de alineación horizontal o varias de las banderas de alineación vertical, la alineación resultante es indefinida.
Estos indicadores se definen en Qt::AlignmentFlag.
Si Qt::TextExpandTabs está definido en flags, se utiliza el siguiente comportamiento para interpretar los caracteres de tabulación en el texto:
- Si tabArray no es nulo, especifica una secuencia de posiciones de píxeles terminada en 0 para los tabuladores del texto.
- Si tabStops es distinto de cero, se utiliza como espaciado de tabulación (en píxeles).
Tenga en cuenta que el rectángulo delimitador puede extenderse a la izquierda de (0, 0), por ejemplo para fuentes en cursiva.
Los caracteres de nueva línea se procesan como saltos de línea.
A pesar de las diferentes alturas reales de los caracteres, las alturas de los rectángulos delimitadores de "Sí" y "sí" son las mismas.
El rectángulo delimitador devuelto por esta función es algo mayor que el calculado por la función más sencilla boundingRect(). Esta función utiliza los cojinetes de fuente maximum left y right como es necesario para que el texto multilínea se alinee correctamente. Además, se utilizan fontHeight() y lineSpacing() para calcular la altura, en lugar de las alturas de caracteres individuales.
Se trata de una función sobrecargada.
Véase también horizontalAdvance(), QPainter::boundingRect(), y Qt::Alignment.
qreal QFontMetricsF::capHeight() const
Devuelve la altura de la mayúscula de la fuente.
La altura de remate de una fuente es la altura de una letra mayúscula por encima de la línea de base. En concreto, es la altura de las letras mayúsculas planas, como la H o la I, a diferencia de las letras redondas, como la O, o las letras puntiagudas, como la A, que pueden mostrar un rebasamiento.
Véase también ascent().
qreal QFontMetricsF::descent() const
Devuelve el descenso de la fuente.
El descenso es la distancia desde la línea base hasta el punto más bajo al que se extienden los caracteres. (Tenga en cuenta que esto es diferente de X, que añade 1 píxel.) En la práctica, algunos diseñadores de fuentes rompen esta regla, por ejemplo, para acomodar un determinado carácter, por lo que es posible (aunque raro) que este valor sea demasiado pequeño.
Véase también ascent().
QString QFontMetricsF::elidedText(const QString &text, Qt::TextElideMode mode, qreal width, int flags = 0) const
Si la cadena text es más ancha que width, devuelve una versión elidida de la cadena (es decir, una cadena con "..." en ella). En caso contrario, devuelve la cadena original.
El parámetro mode especifica si el texto se elide a la izquierda (por ejemplo, "...tech"), en el centro (por ejemplo, "Tr...ch") o a la derecha (por ejemplo, "Trol...").
width se especifica en píxeles, no en caracteres.
El argumento flags es opcional y actualmente sólo admite Qt::TextShowMnemonic como valor.
La marca elide sigue a layoutdirection. Por ejemplo, estará a la derecha del texto para disposiciones de derecha a izquierda si mode es Qt::ElideLeft, y a la izquierda del texto si mode es Qt::ElideRight.
qreal QFontMetricsF::fontDpi() const
Devuelve los PPP de la fuente.
qreal QFontMetricsF::height() const
Devuelve la altura de la fuente.
Siempre es igual a ascent()+descent().
Véase también leading() y lineSpacing().
[since 6.3] qreal QFontMetricsF::horizontalAdvance(const QString &text, const QTextOption &option) const
Devuelve el avance horizontal en píxeles de text trazado mediante option.
El avance es la distancia apropiada para dibujar un carácter posterior después de text.
Esta función se introdujo en Qt 6.3.
Véase también boundingRect().
qreal QFontMetricsF::horizontalAdvance(const QString &text, int length = -1) const
Devuelve el avance horizontal en píxeles de los primeros length caracteres de text. Si length es negativo (por defecto), se utiliza toda la cadena. Se analiza toda la longitud de text aunque length sea sustancialmente más corta.
El avance es la distancia apropiada para dibujar un carácter posterior después de text.
Véase también boundingRect().
qreal QFontMetricsF::horizontalAdvance(QChar ch) const

Devuelve el avance horizontal del carácter ch en píxeles. Se trata de una distancia adecuada para dibujar un carácter posterior a ch.
Algunas de las métricas se describen en la imagen de la derecha. Los rectángulos oscuros centrales cubren el avance horizontal lógico() de cada carácter. Los rectángulos pálidos exteriores cubren los leftBearing() y rightBearing() de cada carácter. Observe que las posiciones de la "f" en este tipo de letra son ambas negativas, mientras que las posiciones de la "o" son ambas positivas.
Atención: Esta función producirá resultados incorrectos para caracteres arábigos o marcas no espaciadas en medio de una cadena, ya que no se puede tener en cuenta la conformación de los glifos y el posicionamiento de las marcas que se produce al procesar cadenas. Cuando implemente un control de texto interactivo, utilice en su lugar QTextLayout.
Se trata de una función sobrecargada.
Véase también boundingRect().
bool QFontMetricsF::inFont(QChar ch) const
Devuelve true si el carácter ch es un carácter válido en la fuente; en caso contrario devuelve false.
bool QFontMetricsF::inFontUcs4(uint ch) const
Devuelve true si el carácter dado por ch, codificado en UCS-4/UTF-32, es un carácter válido en la fuente; en caso contrario devuelve false.
qreal QFontMetricsF::leading() const
Devuelve el interlineado de la fuente.
Es el interlineado natural.
Véase también height() y lineSpacing().
qreal QFontMetricsF::leftBearing(QChar ch) const
Devuelve el rumbo izquierdo del carácter ch en la fuente.
El rumbo izquierdo es la distancia hacia la derecha del píxel más a la izquierda del carácter desde el origen lógico del carácter. Este valor es negativo si los píxeles del carácter se extienden hacia la izquierda del origen lógico.
Véase horizontalAdvance() para una descripción gráfica de esta métrica.
Véase también rightBearing(), minLeftBearing() y horizontalAdvance().
qreal QFontMetricsF::lineSpacing() const
Devuelve la distancia de una línea base a la siguiente.
Este valor es siempre igual a leading()+height().
Véase también height() y leading().
qreal QFontMetricsF::lineWidth() const
Devuelve el ancho de las líneas de subrayado y tachado, ajustado al tamaño de punto de la fuente.
Véase también underlinePos(), overlinePos() y strikeOutPos().
qreal QFontMetricsF::maxWidth() const
Devuelve la anchura del carácter más ancho de la fuente.
qreal QFontMetricsF::minLeftBearing() const
Devuelve el porte izquierdo mínimo de la fuente.
Es el leftBearing(char) más pequeño de todos los caracteres de la fuente.
Tenga en cuenta que esta función puede ser muy lenta si la fuente es grande.
Véase también minRightBearing() y leftBearing().
qreal QFontMetricsF::minRightBearing() const
Devuelve el porte derecho mínimo de la fuente.
Es el rightBearing(char) más pequeño de todos los caracteres de la fuente.
Tenga en cuenta que esta función puede ser muy lenta si la fuente es grande.
Véase también minLeftBearing() y rightBearing().
qreal QFontMetricsF::overlinePos() const
Devuelve la distancia desde la línea base hasta donde debe dibujarse una sobrelínea.
Véase también underlinePos(), strikeOutPos() y lineWidth().
qreal QFontMetricsF::rightBearing(QChar ch) const
Devuelve la orientación derecha del carácter ch en la fuente.
El rumbo derecho es la distancia hacia la izquierda del píxel más a la derecha del carácter desde el origen lógico de un carácter posterior. Este valor es negativo si los píxeles del carácter se extienden hacia la derecha de horizontalAdvance() del carácter.
Véase horizontalAdvance() para una descripción gráfica de esta métrica.
Véase también leftBearing(), minRightBearing() y horizontalAdvance().
QSizeF QFontMetricsF::size(int flags, const QString &text, int tabStops = 0, int *tabArray = nullptr) const
Devuelve el tamaño en píxeles de los caracteres en la dirección text.
El argumento flags es el OR a nivel de bits de los siguientes indicadores:
- Qt::TextSingleLine ignora los caracteres de nueva línea.
- Qt::TextExpandTabs expande los tabuladores (véase más adelante)
- Qt::TextShowMnemonic interpreta "&x" como x; es decir, subrayado.
- Qt::TextWordWrap rompe el texto para ajustarlo al rectángulo.
Estos indicadores se definen en el enum Qt::TextFlag.
Si Qt::TextExpandTabs está definido en flags, se utiliza el siguiente comportamiento para interpretar los caracteres de tabulación en el texto:
- Si tabArray no es nulo, especifica una secuencia de posiciones de píxeles terminada en 0 para los tabuladores en el texto.
- Si tabStops es distinto de cero, se utiliza como espaciado de tabulación (en píxeles).
Los caracteres de nueva línea se procesan como saltos de línea.
Nota: A pesar de las diferentes alturas reales de los caracteres, las alturas de los rectángulos delimitadores de "Sí" y "sí" son las mismas.
Véase también boundingRect().
qreal QFontMetricsF::strikeOutPos() const
Devuelve la distancia desde la línea de base hasta donde debería dibujarse la línea de strikeout.
Véase también underlinePos(), overlinePos() y lineWidth().
[noexcept] void QFontMetricsF::swap(QFontMetricsF &other)
Intercambia esta instancia de métrica de fuentes con other. Esta operación es muy rápida y nunca falla.
QRectF QFontMetricsF::tightBoundingRect(const QString &text) const
Devuelve un rectángulo delimitador ajustado alrededor de los caracteres de la cadena especificada por text. El rectángulo delimitador siempre cubre al menos el conjunto de píxeles que cubriría el texto si se dibujara en (0, 0).
Tenga en cuenta que el rectángulo delimitador puede extenderse a la izquierda de (0, 0), por ejemplo para fuentes en cursiva, y que la anchura del rectángulo devuelto puede ser diferente de la que devuelve el método horizontalAdvance().
Si desea conocer el ancho de avance de la cadena (para disponer un conjunto de cadenas una junto a otra), utilice horizontalAdvance() en su lugar.
Los caracteres de nueva línea se procesan como caracteres normales, no como saltos de línea.
Véase también horizontalAdvance(), height() y boundingRect().
[since 6.3] QRectF QFontMetricsF::tightBoundingRect(const QString &text, const QTextOption &option) const
Devuelve un rectángulo delimitador ajustado alrededor de los caracteres de la cadena especificada por text trazados mediante option. El rectángulo delimitador siempre cubre al menos el conjunto de píxeles que cubriría el texto si se dibujara en (0,0).
Tenga en cuenta que el rectángulo delimitador puede extenderse a la izquierda de (0, 0), por ejemplo para fuentes en cursiva, y que la anchura del rectángulo devuelto puede ser diferente de la que devuelve el método horizontalAdvance().
Si desea conocer el ancho de avance de la cadena (para disponer un conjunto de cadenas una junto a otra), utilice horizontalAdvance() en su lugar.
Los caracteres de nueva línea se procesan como caracteres normales, no como saltos de línea.
Esta función se introdujo en Qt 6.3.
Véase también horizontalAdvance(), height() y boundingRect().
qreal QFontMetricsF::underlinePos() const
Devuelve la distancia desde la línea base hasta donde debe dibujarse un guión bajo.
Véase también overlinePos(), strikeOutPos() y lineWidth().
qreal QFontMetricsF::xHeight() const
Devuelve la altura 'x' de la fuente. A menudo, pero no siempre, es la misma que la altura del carácter 'x'.
bool QFontMetricsF::operator!=(const QFontMetricsF &other) const
Devuelve true si la métrica de la fuente no es igual a la métrica de la fuente other; en caso contrario devuelve false.
Véase también operator==().
[noexcept] QFontMetricsF &QFontMetricsF::operator=(QFontMetricsF &&other)
Mover-asigna other a esta instancia QFontMetricsF.
QFontMetricsF &QFontMetricsF::operator=(const QFontMetrics &other)
Asigna other a este objeto.
QFontMetricsF &QFontMetricsF::operator=(const QFontMetricsF &fm)
Asigna las métricas de fuente fm a este objeto de métricas de fuente.
bool QFontMetricsF::operator==(const QFontMetricsF &other) const
Devuelve true si las métricas de fuente son iguales a las métricas de fuente other; en caso contrario devuelve false.
Dos métricas de fuente se consideran iguales si se construyeron a partir del mismo QFont y los dispositivos de pintura para los que se construyeron se consideran 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.