Home · All Classes · Main Classes · Grouped Classes · Modules · Functions

Описание Класса QFontMetrics
[модуль QtGui]

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

#include <QFontMetrics>

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


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

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

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

  1. При вызове конструктора QFontMetrics с QFont создается объект метрик шрифта для совместимого с экраном шрифта, т.е. шрифт может быть не совместимым с принтером. Если позже шрифт изменяется, то объект метрик шрифта не обновляется.

    (Обратите внимание: Если Вы используете шрифт принтера, то возвращаемые значения могут быть неточны. Шрифты принтера не всегда доступны, поэтому, если заданный шрифт принтера не доступен, используется самый близкий экранный шрифт.)

  2. QWidget::fontMetrics() возвращает метрики шрифта для шрифта виджета. Это эквивалентно вызову QFontMetrics(widget->font()). Если шрифт виджета меняется позже вызова, то объект метрик шрифта не обновляется.
  3. QPainter::fontMetrics() возвращает метрики шрифта для текущего шрифта живописца. Если шрифт живописца меняется позже вызова, то объект метрик шрифта не обновляется.

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

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

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

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

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

Пример:

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

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


Описание Функций-Членов

QFontMetrics::QFontMetrics ( const QFont & font )

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

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

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

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

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

Создает объект метрик шрифта для шрифта font и устройства рисования paintdevice.

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

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

QFontMetrics::QFontMetrics ( const QFontMetrics & fm )

Создает копию fm.

QFontMetrics::~QFontMetrics ()

Разрушает объект метрик шрифта и освобождает все занятые ресурсы.

int QFontMetrics::ascent () const

Возвращает подъем шрифта.

Подъем шрифта - это расстояние от базовой линии до самой высокой точки символов шрифта. В действительности, некоторые разработчики шрифтов могут внести неправильлности в работу данной функции, например, когда они придают больше, чем одну верхнюю точку символу, или когда размещаю необычный символ на необычном языке, так что иногда (хотя и редко) возвращаемое значение может быть слишком маленьким.

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

QRect QFontMetrics::boundingRect ( QChar ch ) const

Возвращает прямоугольник, описывающий символ ch относительно самой левой точки основной линии.

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

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

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

QRect QFontMetrics::boundingRect ( const QString & str ) const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Возвращает прямоугольник, охватывающий символы строки str, если она отображена в позиции (0, 0).

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

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

Из-за различной высоты символов, высоты прямоугольников, охватывающих, например, "Yes" и "yes" могут быть различны.

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

QRect QFontMetrics::boundingRect ( int x, int y, int width, int height, int flags, const QString & text, int tabstops = 0, int * tabarray = 0 ) const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Возвращает прямоугольник, охватывающий переданную строку text внутри прямоугольника с координатами x и y, шириной width и высотой height.

Если flags установлен в Qt::TextExpandTabs, а tabarray не нулевой, то он определяет заканчивающуюся на ноль последовательность заданных в пикселях позиций табуляции; в противном случае, если tabstops не нулевой, то он используется как интервал табуляции (в пикселях).

QRect QFontMetrics::boundingRect ( const QRect & r, int flgs, const QString & str, int tabstops = 0, int * tabarray = 0 ) const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Возвращает прямоугольник, охватывающий символы строки, заданной с помощью str, если она отображена в позиции (0, 0). Рисование строки и, следовательно, охватывающий прямоугольник ограничены прямоугольником r.

Аргумент flgs является побитовым ИЛИ значений следующий флагов:

По умолчанию, выравнивание Qt::Horizontal установлено в Qt::AlignLeft, а вертикальное выравнивание установлено в Qt::AlignTop.

Если установлено несколько горизонтальных или несколько вертикальных флагов выравнивания, то результат не определен.

Данные флаги определены в файле qnamespace.h.

Если flgs установлен в Qt::TextExpandTabs тогда, если tabarray не нулевой, то он определяет заканчивающуюся на ноль последовательность позиций табуляции (в пикслелсях); в противном случае, если tabstops не нулевой, то он используется как интервал табуляции (в пикселях).

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

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

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

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

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

int QFontMetrics::charWidth ( const QString & str, int pos ) const

Возвращает ширину символа, стоящего в строке str в позиции pos.

Целая строка необходима, поскольку при рисовании, в некоторых языках (например, в Арабском), глиф может меняться в зависимости от контекста (символов стоящих перед и после нужного).

Данная функция также принимает во внимание не симольные знаки и связи.

int QFontMetrics::descent () const

Возвращает спуск шрифта.

Спуск шрифта - это расстояние от базовой линии до самой низкой точки символов шрифта. (Обратите внимание, что есть отлиция в работе на X, который добавляет один пиксель.) В действительности, некоторые разработчики шрифтов могут внести неправильлности в работу данной функции, например, когда они придают больше, чем одну нижнюю точку символу, или когда размещаю необычный символ на необычном языке, так что иногда (хотя и редко) возвращаемое значение может быть слишком маленьким.

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

int QFontMetrics::height () const

Возвращает высоту шрифта.

Это значение всегда эквивалентно ascent()+descent()+1 (1 - базовая линия).

См. также leading() и lineSpacing().

bool QFontMetrics::inFont ( QChar ch ) const

Возвращает true если символ ch - действительный символ шрифта; в противном случае возвращает false.

int QFontMetrics::leading () const

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

См. также height() и lineSpacing().

int QFontMetrics::leftBearing ( QChar ch ) const

Возвращает левый сдвиг символа ch шрифта.

Левый сдвиг символа - это рассояние вправо от самого левого пикселя символа до логической позиции символа. Это значение отрицательно, если символ простирается только влево от своей логической позиции.

Графическое описание данной метрики см. width().

См. также rightBearing(), minLeftBearing() и width().

int QFontMetrics::lineSpacing () const

Возвращает расстояние между двумя соседними базовыми линиями.

Данное значение всегда эквивалентно leading()+height().

См. также height() и leading().

int QFontMetrics::lineWidth () const

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

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

int QFontMetrics::maxWidth () const

Возвращает ширину самого широкого символа шрифта.

int QFontMetrics::minLeftBearing () const

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

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

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

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

int QFontMetrics::minRightBearing () const

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

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

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

См. также minLeftBearing() и rightBearing().

int QFontMetrics::overlinePos () const

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

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

int QFontMetrics::rightBearing ( QChar ch ) const

Возвращает правый сдвиг символа ch шрифта.

Правый сдвиг символа - это рассояние влево от самого правого пикселя символа до логической позиции символа. Это значение отрицательно, если символ простирается только вправо от width() символа.

Графическое описание данной метрики см. width().

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

QSize QFontMetrics::size ( int flgs, const QString & text, int tabstops = 0, int * tabarray = 0 ) const

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

Аргумент flgs является побитовым ИЛИ значений следующих флагов:

Данные флаги определены в файле qnamespace.h.

Если flgs установлен в Qt::TextExpandTabs тогда, если tabarray не нулевой, то он определяет заканчивающуюся на ноль последовательность позиций табуляции (в пикслелсях); в противном случае, если tabstops не нулевой, то он используется как интервал табуляции (в пикселях).

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

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

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

int QFontMetrics::strikeOutPos () const

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

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

int QFontMetrics::underlinePos () const

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

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

int QFontMetrics::width ( const QString & str, int len = -1 ) const

Возвращает ширину в пикселях первых len символов строки str. Если len отрицательно (по умолчанию), то возвращается ширина всей строки.

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

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

int QFontMetrics::width ( QChar ch ) const

Данная перегруженная функция-член предоставлена для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Bearings

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

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

Предупреждение: Данная функция не корректно работает с Арабскими символами и непечатаемыми символами внутри строки, таких как метки рисования и позиционирования, которые, иногда, не могут быть учтены. Если Вы не ищете ширину изолированных символов, используйте вместо данной функции charWidth().

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

int QFontMetrics::xHeight () const

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

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

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

Два объекта метрик шрифта считаются эквивалентными, если они созданы для одного объекта QFont и устройства рисования, для которых они созданы, считаются совместимыми.

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

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

Присваивает данному объекту значение объекта метрик шрифта fm.

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

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

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

Два объекта метрик шрифта считаются эквивалентными, если они созданы для одного объекта QFont и устройства рисования, для которых они созданы, считаются совместимыми.

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


Copyright © 2005 Trolltech Trademarks
Qt 4.1.0
Hosted by uCoz