Spec-Zone.ru › Qt 6.0

Класс 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

Подробное описание

Функции 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. Если paintdevice является nullptr, метрики будут совместимы с экраном, т.е. метрики, которые вы получите, если используете шрифт для отрисовки текста на виджетах или пиксельмапах, а не на QPicture или QPrinter.

Объект метрик шрифта содержит информацию о шрифте, переданном в конструктор в момент его создания, и не обновляется, если атрибуты шрифта изменяются позднее.

Эта функция была добавлена в Qt 5.13.

QFontMetricsF::QFontMetricsF(const QFont &font)

Создаёт объект метрик шрифта для font.

Метрики шрифта будут совместимы с paintdevice, используемым для создания 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.

Аргумент 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(). Эта функция использует минимальные значения влево left и right от шрифта, так как это необходимо для многострочного текста, чтобы он выравнивался правильно. Также используются 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 указывает, обрезается ли текст слева (например, "...тех"), посередине (например, "Тр...х") или справа (например, "Троль...").

width задаётся в пикселях, а не в символах.

Аргумент flags необязательный и в настоящее время поддерживает только Qt::TextShowMnemonic в качестве значения.

END_OF_DOCUMENT_MARKER

Отметка об усечении следует за направлением выравнивания. Например, она будет расположена справа от текста для выравнивания справа налево, если режим 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

Это перегруженная функция.

Bearings

Возвращает горизонтальное смещение символа 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(char) всех символов в шрифте.

Обратите внимание, что эта функция может быть очень медленной, если шрифт большой.

См. также minRightBearing() и leftBearing().

qreal QFontMetricsF::minRightBearing() const

Возвращает минимальный правый отступ шрифта.

Это наименьший rightBearing(char) всех символов в шрифте.

Обратите внимание, что эта функция может быть очень медленной, если шрифт большой.

См. также 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().

END_OF_DOCUMENT_MARKER ```

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.0/qfontmetricsf.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API