Класс 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 не равен null, он задаёт последовательность значений позиции табуляции (в пикселях) в тексте.
- Если 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...х") или справа (например, "Трол...").
Ширина width задаётся в пикселях, а не символах.
Аргумент flags является необязательным и в настоящее время поддерживает только Qt::TextShowMnemonic в качестве значения.
Отметка усечения следует за направлением макета. Например, она будет расположена справа от текста для макетов справа налево, если значение mode равно Qt::ElideLeft, и слева от текста, если значение mode равно 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.
Некоторые метрики описаны на рисунке справа. Центральные темные прямоугольники охватывают логическое горизонтальное смещение (%) каждого символа. Внешние светлые прямоугольники охватывают 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 — это побитовое ИЛИ следующих флагов:
- Qt::TextSingleLine игнорирует символы новой строки.
- Qt::TextExpandTabs расширяет табуляцию (см. ниже)
- Qt::TextShowMnemonic интерпретирует "&x" как x; т.е., подчеркнутое.
- Qt::TextWordWrap разбивает текст, чтобы он соответствовал прямоугольнику.
Эти флаги определены в перечислении Qt::TextFlag.
Если флаг Qt::TextExpandTabs установлен в flags, используется следующее поведение для интерпретации табуляции в тексте:
- Если tabArray не равен null, он указывает на последовательность нуль-терминированных позиций в пикселях для табуляции в тексте.
- Если tabStops отлично от нуля, оно используется в качестве размера табуляции (в пикселях).
Символы новой строки обрабатываются как разрывы строк.
Примечание: Несмотря на разную фактическую высоту символов, высоты прямоугольников размещения "Да" и "да" одинаковы.
См. также 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.1/qfontmetricsf.html