Spec-Zone.ru › Qt 5.6

Класс QFontMetricsF

Класс QFontMetricsF предоставляет информацию о метриках шрифта. Подробнее...

Заголовок: #include <QFontMetricsF>
qmake: QT += gui
  • Список всех членов, включая унаследованные

Примечание: Все функции в этом классе являются реентерабельными.

Открытые функции

QFontMetricsF(const QFont &font)
QFontMetricsF(const QFont &font, QPaintDevice *paintdevice)
QFontMetricsF(const QFontMetrics &fontMetrics)
QFontMetricsF(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 = Q_NULLPTR) const
qreal descent() const
QString elidedText(const QString &text, Qt::TextElideMode mode, qreal width, int flags = 0) const
qreal height() 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 = Q_NULLPTR) const
qreal strikeOutPos() const
void swap(QFontMetricsF &other)
QRectF tightBoundingRect(const QString &text) const
qreal underlinePos() const
qreal width(const QString &text) const
qreal width(QChar ch) const
qreal xHeight() const
bool operator!=(const QFontMetricsF &other) const
QFontMetricsF & operator=(const QFontMetricsF &fm)
QFontMetricsF & operator=(const QFontMetrics &other)
QFontMetricsF & operator=(QFontMetricsF &&other)
bool operator==(const QFontMetricsF &other) const

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

Класс QFontMetricsF предоставляет информацию о метриках шрифта.

QFontMetricsF функции вычисляют размер символов и строк для заданного шрифта. Вы можете создать объект QFontMetricsF с существующим QFont, чтобы получить метрики для этого шрифта. Если шрифт изменится позже, объект метрик шрифта не будет обновлён.

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

Несколько функций работают со шрифтом: ascent(), descent(), height(), leading() и lineSpacing() возвращают основные свойства размера шрифта. Функции underlinePos(), overlinePos(), strikeOutPos() и lineWidth() возвращают свойства линии, подчеркивающей, перечеркивающей или зачёркивающей символы. Эти функции быстрые.

Также есть некоторые функции, работающие с набором глифов в шрифте: minLeftBearing(), minRightBearing() и maxWidth(). Они по необходимости медленные, и мы рекомендуем избегать их, если это возможно.

Для каждого символа вы можете получить его width(), leftBearing() и rightBearing(), и определить, находится ли он в шрифте, используя inFont(). Вы также можете обработать символ как строку и использовать функции для строк на нём.

Функции для строк включают width() для возвращения ширины строки в пикселях (или пунктах для принтера), boundingRect() для возвращения прямоугольника, достаточно большого для размещения отображаемой строки, и size() для возвращения размера этого прямоугольника.

Пример:

QFont font("times", 24);
QFontMetricsF fm(font);
qreal pixelsWide = fm.width("What's the width of this text?");
qreal pixelsHigh = fm.height();

См. также QFont, QFontInfo и QFontDatabase.

Документация по функциям-членам

QFontMetricsF::QFontMetricsF(const QFont &font)

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

Метрики шрифта будут совместимы с устройством рисования, используемым для создания font.

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

Используйте QFontMetricsF(const QFont &, QPaintDevice *) для получения метрик шрифта, совместимых с определённым устройством рисования.

QFontMetricsF::QFontMetricsF(const QFont &font, QPaintDevice *paintdevice)

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

Метрики шрифта будут совместимы с переданным устройством отрисовки. Если paintdevice равен 0, метрики будут совместимы с экраном, т.е. такими, как вы получите, если используете шрифт для отображения текста на виджетах или растровых изображениях, а не на QPicture или QPrinter.

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

QFontMetricsF::QFontMetricsF(const QFontMetrics &fontMetrics)

Создает объект метрик шрифта с плавающей точкой по заданному объекту fontMetrics.

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

QFontMetricsF::QFontMetricsF(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().

Если вам нужно узнать ширину продвижения строки (для выравнивания набора строк рядом друг с другом), используйте метод width() вместо этого.

Символы новой строки обрабатываются как обычные символы, а не как разрывы строк.

Высота прямоугольника ограничивается по крайней мере значением, возвращаемым методом 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 = Q_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, он задает последовательность значений позиции табуляции в тексте, завершающуюся 0.
  • Если tabStops не равно 0, оно используется в качестве расстояния табуляции (в пикселях).

Обратите внимание, что прямоугольник может простираться влево от (0, 0), например, для курсивных шрифтов.

Символы новой строки обрабатываются как разрывы строк.

Несмотря на различные фактические высоты символов, высоты прямоугольников ограничивающих "Да" и "да" одинаковы.

Прямоугольник ограничивающий, возвращаемый этой функцией, несколько больше, чем тот, который рассчитывается более простой функцией boundingRect(). Эта функция использует максимальные левые и правые отступы шрифта, как это необходимо для многострочного текста, чтобы он выравнивался корректно. Кроме того, для расчета высоты используются fontHeight() и lineSpacing(), а не отдельные высоты символов.

См. также width(), QPainter::boundingRect() и Qt::Alignment.

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().

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(QChar) для графического описания этой метрики.

См. также 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(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 в шрифте.

Отступ справа — это расстояние влево от самого правого пикселя символа до логического начала последующего символа. Это значение отрицательно, если пиксели символа выходят за пределы ширины символа width().

См. width() для графического описания этой метрики.

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

QSizeF QFontMetricsF::size(int flags, const QString &text, int tabStops = 0, int *tabArray = Q_NULLPTR) const

Возвращает размер символов в заданном тексте в пикселях.

Аргумент flags — это битовое ИЛИ следующих флагов:

  • Qt::TextSingleLine игнорирует символы новой строки.
  • Qt::TextExpandTabs расширяет табуляцию (см. ниже)
  • Qt::TextShowMnemonic интерпретирует "&x" как x; т. е., с подчеркиванием.
  • Qt::TextWordWrap разбивает текст, чтобы он помещался в прямоугольник.

Эти флаги определены в перечислении Qt::TextFlag.

Если Qt::TextExpandTabs установлен в flags, используется следующее поведение для интерпретации символов табуляции в тексте:

  • Если tabArray не равен null, он указывает на последовательность позиций в пикселях для символов табуляции в тексте.
  • Если tabStops не равен нулю, он используется в качестве интервала табуляции (в пикселях).

Символы новой строки обрабатываются как разрывы строк.

Примечание: Несмотря на разницу в фактических высотах символов, высоты ограничивающих прямоугольников для "Yes" и "yes" одинаковы.

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

Если вам нужна ширина продвижения строки (для выравнивания набора строк рядом друг с другом), используйте метод width() вместо этого.

Символы новой строки обрабатываются как обычные символы, а не как разрывы строк.

Предупреждение: Вызов этого метода очень медленный в Windows.

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

См. также width(), height() и boundingRect().

qreal QFontMetricsF::underlinePos() const

Возвращает расстояние от базовой линии до места, где должна быть нарисована нижняя черта.

См. также overlinePos(), strikeOutPos() и lineWidth().

qreal QFontMetricsF::width(const QString &text) const

Возвращает ширину символов в заданном тексте в пикселях.

Обратите внимание, что это значение не равно значению width() возвращаемому методом boundingRect(), потому что boundingRect() возвращает прямоугольник, описывающий пиксели, занимаемые этой строкой, а width() — расстояние до места, где должна быть отрисована следующая строка.

См. также boundingRect().

qreal QFontMetricsF::width(QChar ch) const

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

Bearings

Возвращает логическую ширину символа ch в пикселях. Это расстояние, подходящее для отрисовки последующего символа после ch.

Некоторые метрики показаны на рисунке справа. Центральные тёмные прямоугольники охватывают логическую ширину каждого символа. Внешние светлые прямоугольники охватывают leftBearing() и rightBearing() каждого символа. Обратите внимание, что отступы символа "f" в данном шрифте оба отрицательны, а отступы "o" оба положительны.

Предупреждение: Эта функция даст некорректные результаты для арабских символов или неразрывных знаков посередине строки, так как форматирование и позиционирование глифов знаков, происходящие при обработке строк, не могут быть учтены. При реализации интерактивного текстового поля используйте QTextLayout вместо этого.

См. также boundingRect().

qreal QFontMetricsF::xHeight() const

Возвращает высоту 'x' шрифта. Она часто, но не всегда, совпадает с высотой символа 'x'.

bool QFontMetricsF::operator!=(const QFontMetricsF &other) const

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

Возвращает true если метрики шрифтов не равны метрикам шрифта other; в противном случае возвращает false.

См. также operator==().

QFontMetricsF &QFontMetricsF::operator=(const QFontMetricsF &fm)

Присваивает метрики шрифта fm этому объекту метрик шрифта.

QFontMetricsF &QFontMetricsF::operator=(const QFontMetrics &other)

Присваивает other этому объекту.

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

QFontMetricsF &QFontMetricsF::operator=(QFontMetricsF &&other)

Перемещает присвоение other этому экземпляру QFontMetricsF.

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/archives/qt-5.6/qfontmetricsf.html

Spec-Zone.ru

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