Класс QFontMetricsF
Класс QFontMetricsF предоставляет информацию о метриках шрифта. Подробнее...
| Заголовок: | #include <QFontMetricsF> |
| 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 | 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(). Эти функции по необходимости медленные, и мы рекомендуем избегать их, если это возможно.
Для каждого символа вы можете получить его ширину, leftBearing() и rightBearing() и узнать, находится ли он в шрифте, используя inFont(). Вы также можете рассматривать символ как строку и использовать строковые функции для него.
Строковые функции включают width(), для возврата ширины строки в пикселях (или точках, для принтера), 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.
Эта функция была добавлена в Qt 4.2.
QFontMetricsF::QFontMetricsF(const QFont &font, const QPaintDevice *paintdevice)
Создаёт объект метрик шрифта для font и paintdevice.
Метрики шрифта будут совместимы с переданным устройством рисования. Если paintdevice равно 0, метрики будут совместимы с экраном, т.е. метрики, которые вы получите, если используете шрифт для рисования текста на виджетах или пиксельных изображениях, а не на 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 этому объекту.
Эта функция была добавлена в Qt 4.2.
QFontMetricsF &QFontMetricsF::operator=(const QFontMetricsF &fm)
Присваивает метрики шрифта fm этому объекту метрик шрифта.
QFontMetricsF::~QFontMetricsF()
Удаляет объект метрик шрифта и освобождает все выделенные ресурсы.
qreal QFontMetricsF::ascent() const
Возвращает восходящую составляющую шрифта.
Восходящая составляющая шрифта — это расстояние от базовой линии до наивысшей позиции символов. На практике некоторые дизайнеры шрифтов нарушают это правило, например, когда они добавляют более одного диакритического знака сверху символа или для адаптации необычного символа в экзотическом языке, поэтому возможно (хотя и редко), что это значение будет слишком малым.
См. также descent().
qreal QFontMetricsF::averageCharWidth() const
Возвращает среднюю ширину глифов в шрифте.
Эта функция была добавлена в Qt 4.2.
QRectF QFontMetricsF::boundingRect(const QString &text) const
Возвращает прямоугольник, охватывающий символы в строке, указанной параметром text. Прямоугольник всегда охватывает как минимум те пиксели, которые текст занял бы, если бы был нарисован в (0, 0).
Обратите внимание, что прямоугольник может выходить за пределы (0, 0) слева, например, для наклонных шрифтов, и что ширина возвращаемого прямоугольника может отличаться от возвращаемой шириной методом width().
Если вам нужна ширина вывода строки (для выравнивания набора строк рядом друг с другом), используйте horizontalAdvance() вместо этого.
Символы новой строки обрабатываются как обычные символы, а не как разрывы строк.
Высота прямоугольника, охватывающего символы, как минимум не меньше значения, возвращаемого методом height().
См. также width(), height(), и QPainter::boundingRect().
QRectF QFontMetricsF::boundingRect(QChar ch) const
Возвращает прямоугольник, охватывающий символ ch относительно левой точки на базовой линии.
Обратите внимание, что прямоугольник может выходить за пределы (0, 0) слева, например, для наклонных шрифтов, и что вывод текста может охватывать все пиксели в прямоугольнике.
Обратите внимание, что прямоугольник обычно простирается как выше, так и ниже базовой линии.
См. также width().
QRectF QFontMetricsF::boundingRect(const QRectF &rect, int flags, const QString &text, int tabStops = 0, int *tabArray = nullptr) const
Это перегруженная функция.
Возвращает прямоугольник, охватывающий символы в заданном text. Это набор пикселей, которые текст займёт, если будет нарисован, ограниченный прямоугольником, заданным параметром rect.
Аргумент 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.
Если в flags установлен флаг Qt::TextExpandTabs, используется следующее поведение для интерпретации символов табуляции в тексте:
- Если tabArray не равен null, он определяет последовательность позиций пикселей для табуляций в тексте, завершающуюся нулём.
- Если tabStops не равно нулю, оно используется в качестве размера отступа табуляции (в пикселях).
Обратите внимание, что прямоугольник может выходить за пределы (0, 0) слева, например, для наклонных шрифтов.
Символы новой строки обрабатываются как разрывы строк.
Несмотря на различные фактические высоты символов, высоты прямоугольников, охватывающих "Да" и "да", одинаковы.
Прямоугольник, возвращаемый этой функцией, немного больше, чем тот, который рассчитывает более простая функция boundingRect(). Эта функция использует максимальные левые и правые отступы шрифта, что необходимо для выравнивания многострочного текста. Также для расчёта высоты используются fontHeight() и lineSpacing(), а не высоты отдельных символов.
См. также width(), QPainter::boundingRect(), и Qt::Alignment.
qreal QFontMetricsF::capHeight() const
Возвращает высоту заглавной буквы шрифта.
Высота заглавной буквы шрифта — это высота заглавных букв над базовой линией. В частности, это высота заглавных букв, которые плоские (например, Н или I), в отличие от круглых букв (например, О) или заострённых букв (например, А), которые могут иметь избыток.
Эта функция была добавлена в 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 определяет, усекается ли текст слева (например, "...тех"), по центру (например, "Тр...х") или справа (например, "Троль...").
width задаётся в пикселях, а не в символах.
Аргумент flags необязателен и в настоящее время поддерживает только Qt::TextShowMnemonic в качестве значения.
Знак усечения следует направлению вывода. Например, он будет находиться справа от текста для направлений справа налево, если mode равен Qt::ElideLeft, и слева от текста, если mode равен Qt::ElideRight.
Эта функция была добавлена в Qt 4.2.
qreal QFontMetricsF::height() const
Возвращает высоту шрифта.
Это всегда равно ascent()+descent().
См. также leading() и lineSpacing().
qreal QFontMetricsF::horizontalAdvance(const QString &text, int length = -1) const
Возвращает горизонтальный отступ в пикселях первых length символов строки text. Если length отрицательно (по умолчанию), используется вся строка.
Отступ — это расстояние, необходимое для вывода последующего символа после text.
Эта функция была добавлена в Qt 5.11.
См. также boundingRect().
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 в шрифте.
Левый отступ — это расстояние вправо от левого пикселя символа до логического начала символа. Это значение отрицательно, если пиксели символа выходят влево от логического начала.
См. width() для графического описания этой метрики.
См. также rightBearing(), minLeftBearing(), и width().
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 в шрифте.
Правый отступ — это расстояние влево от правого пикселя символа до логического начала последующего символа. Это значение отрицательно, если пиксели символа выходят вправо за ширину символа.
См. width() для графического описания этой метрики.
См. также leftBearing(), minRightBearing(), и width().
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().
void QFontMetricsF::swap(QFontMetricsF &other)
Меняет местами этот экземпляр метрик шрифта с other. Эта функция очень быстрая и никогда не завершается ошибкой.
Эта функция была добавлена в Qt 5.0.
QRectF QFontMetricsF::tightBoundingRect(const QString &text) const
Возвращает плотный прямоугольник обводки вокруг символов в строке, заданной text. Прямоугольник обводки всегда охватывает как минимум множество пикселей, которые текст охватывал бы, если бы был нарисован в (0, 0).
Обратите внимание, что прямоугольник обводки может выходить влево от (0, 0), например, для наклонных шрифтов, и что ширина возвращённого прямоугольника может отличаться от возвращённой методом width().
Если вам нужна ширина отступа строки (для выравнивания набора строк рядом друг с другом), используйте horizontalAdvance() вместо этого.
Символы новой строки обрабатываются как обычные символы, а не как разрывы строк.
Предупреждение: Вызов этого метода очень медленный в Windows.
Эта функция была добавлена в Qt 4.3.
См. также width(), 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-5.13/qfontmetricsf.html