Класс QFontMetricsF
Класс QFontMetricsF предоставляет информацию о метриках шрифта. Подробнее...
| Заголовок: | #include <QFontMetricsF> |
| CMake: | find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
Примечание: Все функции в этом классе являются реентерабельными.
Открытые функции
| QFontMetricsF(const QFontMetricsF &fm) | |
| QFontMetricsF(const QFontMetrics &fontMetrics) | |
| QFontMetricsF(const QFont &font, const QPaintDevice *paintdevice) | |
| QFontMetricsF(const QFont &font) | |
| QFontMetricsF & | operator=(QFontMetricsF &&other) |
| QFontMetricsF & | operator=(const QFontMetrics &other) |
| QFontMetricsF & | operator=(const QFontMetricsF &fm) |
| ~QFontMetricsF() | |
| qreal | ascent() const |
| qreal | averageCharWidth() const |
| QRectF | boundingRect(const QString &text) const |
| QRectF | boundingRect(QChar ch) 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 |
| 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 |
| qreal | underlinePos() const |
| qreal | xHeight() const |
| bool | operator!=(const QFontMetricsF &other) const |
| bool | operator==(const QFontMetricsF &other) const |
Подробное описание
Функции QFontMetricsF вычисляют размер символов и строк для заданного шрифта. Вы можете создать объект QFontMetricsF с существующим QFont для получения метрик для этого шрифта. Если шрифт изменяется позже, объект метрик шрифта не обновляется.
После создания объект предоставляет функции для доступа к отдельным метрикам шрифта, его символам и для строк, отображаемых в шрифте.
Существует несколько функций, которые работают со шрифтом: ascent(), descent(), height(), leading() и lineSpacing() возвращают основные свойства размера шрифта. Функции underlinePos(), overlinePos(), strikeOutPos() и lineWidth() возвращают свойства линии, которая подчеркивает, перечеркивает или зачеркивает символы. Все эти функции работают быстро.
Существуют также некоторые функции, которые работают с набором глифов в шрифте: minLeftBearing(), minRightBearing() и maxWidth(). Эти функции по необходимости медленные, и мы рекомендуем избегать их, если это возможно.
Для каждого символа вы можете получить его horizontalAdvance(), leftBearing() и rightBearing(), и узнать, находится ли он в шрифте, используя inFont(). Вы также можете рассматривать символ как строку и использовать для него строковые функции.
Строковые функции включают horizontalAdvance(), для возврата ширины строки в пикселях (или точках для принтера), boundingRect(), для возврата прямоугольника, достаточно большого, чтобы содержать отображаемую строку, и size(), для возврата размера этого прямоугольника.
Пример:
QFont font("times", 24);
QFontMetricsF fm(font);
qreal pixelsWide = fm.horizontalAdvance("What's the width of this text?");
qreal pixelsHigh = fm.height(); См. также QFont, QFontInfo и QFontDatabase.
Документация по функциям-членам
QFontMetricsF::QFontMetricsF(const QFontMetricsF &fm)
Создает копию fm.
QFontMetricsF::QFontMetricsF(const QFontMetrics &fontMetrics)
Создает объект метрик шрифта с плавающей точкой из заданного объекта fontMetrics.
[since 5.13] QFontMetricsF::QFontMetricsF(const QFont &font, const QPaintDevice *paintdevice)
Создаёт объект метрик шрифта для font и paintdevice.
Метрики шрифта будут совместимы с переданным устройством отрисовки. Если paintdevice — nullptr, метрики будут совместимы со экраном, то есть такими, которые вы получаете, используя шрифт для отрисовки текста на виджетах или пиктограммах, а не на QPicture или QPrinter.
Объект метрик шрифта хранит информацию о шрифте, переданном в конструктор в момент создания, и не обновляется, если атрибуты шрифта изменяются позже.
Функция была добавлена в Qt 5.13.
QFontMetricsF::QFontMetricsF(const QFont &font)
Создаёт объект метрик шрифта для font.
Метрики шрифта будут совместимы с устройством отрисовки, используемым для создания font.
Объект метрик шрифта хранит информацию о шрифте, переданном в конструктор в момент создания, и не обновляется, если атрибуты шрифта изменяются позже.
Используйте QFontMetricsF(const QFont &, QPaintDevice *) для получения метрик шрифта, совместимых с определённым устройством отрисовки.
QFontMetricsF &QFontMetricsF::operator=(QFontMetricsF &&other)
Перемещающая присваивание other этому экземпляру QFontMetricsF.
QFontMetricsF &QFontMetricsF::operator=(const QFontMetrics &other)
Присваивает other этому объекту.
QFontMetricsF &QFontMetricsF::operator=(const QFontMetricsF &fm)
Присваивает метрики шрифта fm этому объекту метрик шрифта.
QFontMetricsF::~QFontMetricsF()
Уничтожает объект метрик шрифта и освобождает все выделенные ресурсы.
qreal QFontMetricsF::ascent() const
Возвращает восходящую величину шрифта.
Восходящая величина шрифта — это расстояние от базовой линии до самой высокой позиции, до которой доходят символы. На практике некоторые дизайнеры шрифтов нарушают это правило, например, когда они добавляют более одного диакритического знака сверху символа, или для адаптации определённого символа, поэтому возможно (хотя и редко), что это значение будет слишком малым.
См. также descent().
qreal QFontMetricsF::averageCharWidth() const
Возвращает среднюю ширину глифов в шрифте.
QRectF QFontMetricsF::boundingRect(const QString &text) const
Возвращает ограничивающую прямоугольник символов в строке, заданной text. Ограничивающая прямоугольник всегда охватывает, по крайней мере, набор пикселей, которые бы занимал текст, если бы он был нарисован в (0, 0).
Обратите внимание, что ограничивающая прямоугольник может простираться влево от (0, 0), например, для наклонных шрифтов, и что ширина возвращённого прямоугольника может отличаться от того, что возвращает метод horizontalAdvance().
Если вам нужна ширина продвижения строки (для выравнивания набора строк рядом друг с другом), используйте метод horizontalAdvance() вместо этого.
Символы новой строки обрабатываются как обычные символы, а не как разрывы строк.
Высота ограничивающего прямоугольника по крайней мере равна значению, возвращённому методом height().
См. также horizontalAdvance(), height(), и QPainter::boundingRect().
QRectF QFontMetricsF::boundingRect(QChar ch) const
Возвращает ограничивающую прямоугольник символа ch относительно самой левой точки на базовой линии.
Обратите внимание, что ограничивающая прямоугольник может простираться влево от (0, 0), например, для наклонных шрифтов, и что вывод текста может охватить все пиксели в ограничивающей прямоугольнике.
Обратите внимание, что прямоугольник обычно простирается как выше, так и ниже базовой линии.
См. также horizontalAdvance().
QRectF QFontMetricsF::boundingRect(const QRectF &rect, int flags, const QString &text, int tabStops = 0, int *tabArray = nullptr) const
Это перегруженная функция.
Возвращает ограничивающую прямоугольник символов в заданном text. Это набор пикселей, которые текст будет занимать, если он будет нарисован, будучи ограниченным ограничивающим прямоугольником, заданным rect. Если rect ссылается на объект nullptr, например, при передаче QRectF по умолчанию, ограничивающая прямоугольник не будет ограничивать себя размером.
Аргумент flags — это побитовое ИЛИ следующих флагов:
- Qt::AlignLeft выравнивает к левой границе, за исключением арабского и иврита, где оно выравнивается к правой.
- Qt::AlignRight выравнивает к правой границе, за исключением арабского и иврита, где оно выравнивается к левой.
- Qt::AlignJustify производит выравнивание текста.
- Qt::AlignHCenter выравнивает по горизонтали по центру.
- Qt::AlignTop выравнивает к верхней границе.
- Qt::AlignBottom выравнивает к нижней границе.
- Qt::AlignVCenter выравнивает по вертикали по центру
-
Qt::AlignCenter (==
Qt::AlignHCenter | Qt::AlignVCenter) - Qt::TextSingleLine игнорирует символы новой строки в тексте.
- Qt::TextExpandTabs расширяет табуляции (см. ниже)
- Qt::TextShowMnemonic интерпретирует "&x" как x; то есть подчёркнутое.
- Qt::TextWordWrap разрывает текст, чтобы он соответствовал прямоугольнику.
Qt::Horizontal выравнивание по умолчанию Qt::AlignLeft, а вертикальное выравнивание по умолчанию Qt::AlignTop.
Если установлено несколько флагов горизонтального или нескольких флагов вертикального выравнивания, то результатом выравнивания является неопределённость.
Эти флаги определены в Qt::AlignmentFlag.
Если Qt::TextExpandTabs установлено в flags, используется следующее поведение для интерпретации символов табуляции в тексте:
- Если tabArray не равно нулю, то он указывает на нуль-терминированную последовательность позиций пикселей для табуляций в тексте.
- Если tabStops не равно нулю, оно используется в качестве интервала табуляции (в пикселях).
Обратите внимание, что ограничивающая прямоугольник может простираться влево от (0, 0), например, для наклонных шрифтов.
Символы новой строки обрабатываются как разрывы строк.
Несмотря на разные фактические высоты символов, высоты ограничивающих прямоугольников "Да" и "да" одинаковы.
Ограничивающая прямоугольник, возвращаемая этой функцией, несколько больше, чем та, которая вычисляется более простой функцией boundingRect(). Эта функция использует максимальные левые и правые показатели шрифта как необходимо для многострочного текста, чтобы выравнивание было корректным. Также для расчёта высоты используются fontHeight() и lineSpacing(), а не высоты отдельных символов.
См. также horizontalAdvance(), QPainter::boundingRect(), и Qt::Alignment.
[since 5.8] qreal QFontMetricsF::capHeight() const
Возвращает высоту заглавной буквы шрифта.
Высота заглавной буквы шрифта — это высота заглавной буквы над базовой линией. Конкретно это высота заглавных букв, которые плоские — такие как H или I — в отличие от округлённых букв, таких как O, или заострённых букв, таких как A, обе из которых могут отображаться с избыточностью.
Функция была добавлена в Qt 5.8.
См. также ascent().
qreal QFontMetricsF::descent() const
Возвращает величину нисходящей части шрифта.
Нисходящая часть — это расстояние от базовой линии до самой нижней позиции, до которой доходят символы. (Обратите внимание, что это отличается от X, который добавляет 1 пиксель.) На практике некоторые дизайнеры шрифтов нарушают это правило, например, для адаптации определённого символа, поэтому возможно (хотя и редко), что это значение будет слишком малым.
См. также ascent().
QString QFontMetricsF::elidedText(const QString &text, Qt::TextElideMode mode, qreal width, int flags = 0) const
Если строка text шире, чем width, возвращает усечённую версию строки (то есть строку с "..." в ней). В противном случае возвращает исходную строку.
Параметр mode определяет, усекается ли текст слева (например, "...тех"), посередине (например, "Tr...ch") или справа (например, "Рол...").
width задаётся в пикселях, а не в символах.
Аргумент flags необязательный и в настоящее время поддерживает только Qt::TextShowMnemonic в качестве значения.
END_OF_DOCUMENT_MARKERОтметка эллипса следует за направлением макета. Например, она будет расположена справа от текста для макетов справа налево, если режим равен Qt::ElideLeft, и слева от текста, если режим равен Qt::ElideRight.
[since 5.14] qreal QFontMetricsF::fontDpi() const
Возвращает DPI шрифта.
Эта функция была добавлена в Qt 5.14.
qreal QFontMetricsF::height() const
Возвращает высоту шрифта.
Она всегда равна ascent()+descent().
См. также leading() и lineSpacing().
[since 5.11] qreal QFontMetricsF::horizontalAdvance(const QString &text, int length = -1) const
Возвращает горизонтальное смещение в пикселях первых length символов строки text. Если length отрицательно (по умолчанию), используется вся строка.
Смещение — это расстояние, необходимое для размещения последующего символа после text.
Эта функция была добавлена в Qt 5.11.
См. также boundingRect().
[since 5.11] qreal QFontMetricsF::horizontalAdvance(QChar ch) const
Это перегруженная функция.
Возвращает горизонтальное смещение символа ch в пикселях. Это расстояние, необходимое для размещения последующего символа после ch.
Некоторые метрики описаны на рисунке справа. Центральные тёмные прямоугольники охватывают логическое горизонтальное смещение (horizontalAdvance()) каждого символа. Внешние светлые прямоугольники охватывают leftBearing() и rightBearing() каждого символа. Обратите внимание, что отступы «f» в этом шрифте оба отрицательны, а отступы «o» — оба положительны.
Предупреждение: Эта функция даст некорректные результаты для арабских символов или неразрывных знаков в середине строки, поскольку невозможно учесть форматирование глифов и позиционирование знаков при обработке строк. При реализации интерактивного текстового управления используйте QTextLayout вместо этого.
Эта функция была добавлена в Qt 5.11.
См. также boundingRect().
bool QFontMetricsF::inFont(QChar ch) const
Возвращает true если символ ch является допустимым символом в шрифте; в противном случае возвращает false.
bool QFontMetricsF::inFontUcs4(uint ch) const
Возвращает true если символ, заданный ch, закодированный в UCS-4/UTF-32, является допустимым символом в шрифте; в противном случае возвращает false.
qreal QFontMetricsF::leading() const
Возвращает величину межстрочного интервала шрифта.
Это естественный интервал между строками.
См. также height() и lineSpacing().
qreal QFontMetricsF::leftBearing(QChar ch) const
Возвращает левый отступ символа ch в шрифте.
Левый отступ — это расстояние вправо от левого пикселя символа до логического начала символа. Это значение отрицательное, если пиксели символа простираются влево от логического начала.
См. horizontalAdvance() для графического описания этой метрики.
См. также rightBearing(), minLeftBearing() и horizontalAdvance().
qreal QFontMetricsF::lineSpacing() const
Возвращает расстояние от одной базовой линии до следующей.
Это значение всегда равно leading()+height().
См. также height() и leading().
qreal QFontMetricsF::lineWidth() const
Возвращает ширину линий подчеркивания и зачёркивания, скорректированную для размера шрифта.
См. также underlinePos(), overlinePos() и strikeOutPos().
qreal QFontMetricsF::maxWidth() const
Возвращает ширину самого широкого символа в шрифте.
qreal QFontMetricsF::minLeftBearing() const
Возвращает минимальный левый отступ шрифта.
Это наименьшее значение leftBearing(символ) всех символов в шрифте.
Обратите внимание, что эта функция может быть очень медленной для больших шрифтов.
См. также minRightBearing() и leftBearing().
qreal QFontMetricsF::minRightBearing() const
Возвращает минимальный правый отступ шрифта.
Это наименьшее значение rightBearing(символ) всех символов в шрифте.
Обратите внимание, что эта функция может быть очень медленной для больших шрифтов.
См. также minLeftBearing() и rightBearing().
qreal QFontMetricsF::overlinePos() const
Возвращает расстояние от базовой линии до места, где должна быть нарисована черта надстрочного символа.
См. также underlinePos(), strikeOutPos() и lineWidth().
qreal QFontMetricsF::rightBearing(QChar ch) const
Возвращает правый отступ символа ch в шрифте.
Правый отступ — это расстояние влево от правого пикселя символа до логического начала последующего символа. Это значение отрицательное, если пиксели символа простираются вправо от horizontalAdvance() символа.
См. horizontalAdvance() для графического описания этой метрики.
См. также leftBearing(), minRightBearing() и horizontalAdvance().
QSizeF QFontMetricsF::size(int flags, const QString &text, int tabStops = 0, int *tabArray = nullptr) const
Возвращает размер в пикселях символов в заданном тексте text.
Аргумент flags — это битовая OR комбинация следующих флагов:
- Qt::TextSingleLine игнорирует символы новой строки.
- Qt::TextExpandTabs расширяет табуляции (см. ниже)
- Qt::TextShowMnemonic интерпретирует «&x» как x; т.е. подчеркнуто.
- Qt::TextWordWrap обрезает текст для соответствия прямоугольнику.
Эти флаги определены в перечислении Qt::TextFlag.
Если в flags установлен флаг Qt::TextExpandTabs, используется следующее поведение для интерпретации символов табуляции в тексте:
- Если tabArray не равен null, он задаёт последовательность позиций в пикселях для табуляции в тексте (заканчивающуюся нулём).
- Если tabStops не равно нулю, оно используется в качестве интервала табуляции (в пикселях).
Символы новой строки обрабатываются как разрывы строк.
Примечание: Несмотря на различные фактические высоты символов, высоты прямоугольников обводки «Yes» и «yes» одинаковы.
См. также boundingRect().
qreal QFontMetricsF::strikeOutPos() const
Возвращает расстояние от базовой линии до места, где должна быть нарисована линия зачёркивания.
См. также underlinePos(), overlinePos() и lineWidth().
[since 5.0] void QFontMetricsF::swap(QFontMetricsF &other)
Меняет местами этот экземпляр метрик шрифта с other. Эта функция очень быстрая и никогда не терпит неудачу.
Эта функция была добавлена в Qt 5.0.
QRectF QFontMetricsF::tightBoundingRect(const QString &text) const
Возвращает жёсткий прямоугольник обводки вокруг символов в строке, заданной text. Прямоугольник обводки всегда охватывает, по крайней мере, набор пикселей, которые текст охватывал бы при рисовании в (0, 0).
Обратите внимание, что прямоугольник обводки может простираться влево от (0, 0), например, для наклонных шрифтов, и что ширина возвращаемого прямоугольника может отличаться от возвращаемого методом horizontalAdvance().
Если вам нужно узнать ширину строки (для выравнивания нескольких строк рядом), используйте horizontalAdvance() вместо этого.
Символы новой строки обрабатываются как обычные символы, а не как разрывы строк.
Предупреждение: Вызов этого метода очень медленный в Windows.
См. также horizontalAdvance(), height() и boundingRect().
qreal QFontMetricsF::underlinePos() const
Возвращает расстояние от базовой линии до места, где должна быть нарисована подчеркивающая линия.
См. также overlinePos(), strikeOutPos() и lineWidth().
qreal QFontMetricsF::xHeight() const
Возвращает высоту символа 'x' шрифта. Часто, но не всегда, совпадает с высотой символа 'x'.
bool QFontMetricsF::operator!=(const QFontMetricsF &other) const
Это перегруженная функция.
Возвращает true если метрики шрифта не равны метрикам шрифта other; в противном случае возвращает false.
См. также operator==().
bool QFontMetricsF::operator==(const QFontMetricsF &other) const
Возвращает true если метрики шрифта равны метрикам шрифта other; в противном случае возвращает false.
Две метрики шрифта считаются равными, если они были созданы из одного и того же QFont, а устройства рисования, для которых они были созданы, считаются совместимыми.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qfontmetricsf.html