Spec-Zone.ru › Qt 5.13

Класс QTextLayout

Класс QTextLayout используется для компоновки и отрисовки текста. Подробнее...

Header: #include <QTextLayout>
qmake: QT += gui
  • Список всех членов, включая унаследованные члены
  • Устаревшие члены

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

Открытые типы

FormatRange
enum CursorMode { SkipCharacters, SkipWords }

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

QTextLayout(const QString &text, const QFont &font, const QPaintDevice *paintdevice)
QTextLayout(const QString &text)
QTextLayout()
~QTextLayout()
void beginLayout()
QRectF boundingRect() const
bool cacheEnabled() const
void clearFormats()
void clearLayout()
QTextLine createLine()
Qt::CursorMoveStyle cursorMoveStyle() const
void draw(QPainter *p, const QPointF &pos, const QVector<QTextLayout::FormatRange> &selections = QVector<FormatRange>(), const QRectF &clip = QRectF()) const
void drawCursor(QPainter *painter, const QPointF &position, int cursorPosition, int width) const
void drawCursor(QPainter *painter, const QPointF &position, int cursorPosition) const
void endLayout()
QFont font() const
QVector<QTextLayout::FormatRange> formats() const
QList<QGlyphRun> glyphRuns(int from = -1, int length = -1) const
bool isValidCursorPosition(int pos) const
int leftCursorPosition(int oldPos) const
QTextLine lineAt(int i) const
int lineCount() const
QTextLine lineForTextPosition(int pos) const
qreal maximumWidth() const
qreal minimumWidth() const
int nextCursorPosition(int oldPos, QTextLayout::CursorMode mode = SkipCharacters) const
QPointF position() const
int preeditAreaPosition() const
QString preeditAreaText() const
int previousCursorPosition(int oldPos, QTextLayout::CursorMode mode = SkipCharacters) const
int rightCursorPosition(int oldPos) const
void setCacheEnabled(bool enable)
void setCursorMoveStyle(Qt::CursorMoveStyle style)
void setFont(const QFont &font)
void setFormats(const QVector<QTextLayout::FormatRange> &formats)
void setPosition(const QPointF &p)
void setPreeditArea(int position, const QString &text)
void setText(const QString &string)
void setTextOption(const QTextOption &option)
QString text() const
const QTextOption & textOption() const

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

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

Класс имеет довольно низкоуровневый API, и если вы не собираетесь реализовывать собственный механизм отрисовки текста для какого-либо специализированного виджета, вам, вероятно, не потребуется использовать его напрямую.

QTextLayout может использоваться как с обычным, так и с форматированным текстом.

QTextLayout может использоваться для создания последовательности экземпляров QTextLine с заданными ширинами и может позиционировать их независимо на экране. После завершения компоновки эти строки можно нарисовать на устройстве отрисовки.

Текст для компоновки может быть предоставлен в конструкторе или установлен с помощью setText().

Компоновка может рассматриваться как последовательность объектов QTextLine; используйте createLine() для создания экземпляра QTextLine и lineAt() или lineForTextPosition() для извлечения созданных строк.

Вот фрагмент кода, демонстрирующий фазу компоновки:

int leading = fontMetrics.leading();
qreal height = 0;
textLayout.setCacheEnabled(true);
textLayout.beginLayout();
while (1) {
    QTextLine line = textLayout.createLine();
    if (!line.isValid())
        break;

    line.setLineWidth(lineWidth);
    height += leading;
    line.setPosition(QPointF(0, height));
    height += line.height();
}
textLayout.endLayout();

Затем текст можно отобразить, вызвав функцию draw() компоновки:

QPainter painter(this);
textLayout.draw(&painter, QPoint(0, 0));

Для заданной позиции в тексте вы можете найти допустимую позицию курсора с помощью isValidCursorPosition(), nextCursorPosition() и previousCursorPosition().

Сам QTextLayout может быть позиционирован с помощью setPosition(); он имеет boundingRect(), а также minimumWidth() и maximumWidth().

См. также QStaticText.

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

enum QTextLayout::CursorMode

Константа Значение
QTextLayout::SkipCharacters 0
QTextLayout::SkipWords 1

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

QTextLayout::QTextLayout(const QString &text, const QFont &font, const QPaintDevice *paintdevice)

Создаёт макет текста, выстраивающий заданный текст text с указанным шрифтом font.

Все метрики и расчёты макета будут выполняться с учётом устройства отрисовки paintdevice. Если paintdevice равен 0, расчёты будут выполняться с учётом метрик экрана.

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

QTextLayout::QTextLayout(const QString &text)

Создаёт макет текста для выстраивания заданного текста text.

QTextLayout::QTextLayout()

Создаёт пустой макет текста.

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

QTextLayout::~QTextLayout()

Уничтожает макет.

void QTextLayout::beginLayout()

Начинает процесс выстраивания макета.

Предупреждение: Это приведёт к аннулированию макета, поэтому все существующие объекты QTextLine, которые ссылаются на предыдущее содержимое, должны быть удалены.

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

QRectF QTextLayout::boundingRect() const

Наименьший прямоугольник, содержащий все строки в макете.

bool QTextLayout::cacheEnabled() const

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

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

void QTextLayout::clearFormats()

Очищает список дополнительных форматов, поддерживаемых макетом текста.

Функция была добавлена в Qt 5.6.

См. также formats() и setFormats().

void QTextLayout::clearLayout()

Очищает информацию о строках в макете. После вызова этой функции, lineCount() возвращает 0.

Предупреждение: Это приведёт к аннулированию макета, поэтому все существующие объекты QTextLine, которые ссылаются на предыдущее содержимое, должны быть удалены.

Функция была добавлена в Qt 4.4.

QTextLine QTextLayout::createLine()

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

Макет текста создаёт новый объект строки, который начинается после последней строки в макете или в начале, если макет пустой. Макет поддерживает внутренний курсор, и каждая строка заполняется текстом с позиции курсора, когда вызывается функция QTextLine::setLineWidth().

После вызова QTextLine::setLineWidth() можно создать и заполнить новую строку текстом. Повторение этого процесса выстроит весь блок текста, содержащийся в QTextLayout. Если текст для вставки в макет закончился, возвращённая QTextLine не будет действительной (isValid() вернёт false).

Qt::CursorMoveStyle QTextLayout::cursorMoveStyle() const

Стиль перемещения курсора для данного QTextLayout. По умолчанию используется Qt::LogicalMoveStyle.

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

void QTextLayout::draw(QPainter *p, const QPointF &pos, const QVector<QTextLayout::FormatRange> &selections = QVector<FormatRange>(), const QRectF &clip = QRectF()) const

Отображает весь макет на рисовальщике p в позиции, заданной pos. Отображаемый макет включает заданные selections и ограничен прямоугольником, заданным clip.

void QTextLayout::drawCursor(QPainter *painter, const QPointF &position, int cursorPosition, int width) const

Отрисовывает курсор текста с текущей кистью и указанной width в заданной position с помощью указанного painter. Соответствующая позиция в тексте задаётся cursorPosition.

void QTextLayout::drawCursor(QPainter *painter, const QPointF &position, int cursorPosition) const

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

Отрисовывает курсор текста с текущей кистью в заданной position с помощью указанного painter. Соответствующая позиция в тексте задаётся cursorPosition.

void QTextLayout::endLayout()

Завершает процесс выстраивания макета.

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

QFont QTextLayout::font() const

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

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

QVector<QTextLayout::FormatRange> QTextLayout::formats() const

Возвращает список дополнительных форматов, поддерживаемых макетом текста.

Функция была добавлена в Qt 5.6.

См. также setFormats() и clearFormats().

QList<QGlyphRun> QTextLayout::glyphRuns(int from = -1, int length = -1) const

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

Если from меньше нуля, то глифы будут начинаться с первого символа в макете. Если length меньше нуля, он будет охватывать всю строку с начальной позиции.

Функция была добавлена в Qt 4.8.

См. также draw() и QPainter::drawGlyphRun().

bool QTextLayout::isValidCursorPosition(int pos) const

Возвращает true если позиция pos является допустимой позицией курсора.

В контексте Юникода некоторые позиции в тексте не являются допустимыми позициями курсора, так как позиция находится внутри суррогата Юникода или кластера графем.

Кластер графем — это последовательность из двух или более символов Юникода, которые образуют один неразрывный объект на экране. Например, латинский символ `Ä' может быть представлен в Юникоде двумя символами, `A' (0x41) и диакритическим знаком диарезиса (0x308). Курсор текста может быть размещён только до или после этих двух символов, никогда не между ними, так как это не имеет смысла. В индийских языках каждая слога образует кластер графем.

int QTextLayout::leftCursorPosition(int oldPos) const

Возвращает позицию курсора слева от oldPos, рядом с ней. Зависит от визуального положения символов после двунаправленной перестановки.

См. также rightCursorPosition() и previousCursorPosition().

QTextLine QTextLayout::lineAt(int i) const

Возвращает i-ую строку текста в этом макете текста.

См. также lineCount() и lineForTextPosition().

int QTextLayout::lineCount() const

Возвращает количество строк в этом макете текста.

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

QTextLine QTextLayout::lineForTextPosition(int pos) const

Возвращает строку, содержащую позицию курсора, заданную pos.

См. также isValidCursorPosition() и lineAt().

qreal QTextLayout::maximumWidth() const

Максимальная ширина, до которой макет может расшириться; это по существу ширина всего текста.

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

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

qreal QTextLayout::minimumWidth() const

Минимальная ширина, необходимая для макета. Это ширина самого маленького неразрывного подстроки макета.

Предупреждение: Данная функция возвращает действительное значение только после завершения процесса вывода.

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

int QTextLayout::nextCursorPosition(int oldPos, QTextLayout::CursorMode mode = SkipCharacters) const

Возвращает следующую допустимую позицию курсора после oldPos, учитывая заданный режим курсора mode. Возвращает значение oldPos, если oldPos не является допустимой позицией курсора.

См. также isValidCursorPosition() и previousCursorPosition().

QPointF QTextLayout::position() const

Глобальная позиция макета. Она не зависит от прямоугольника ограничивающей области и процесса вывода.

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

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

int QTextLayout::preeditAreaPosition() const

Возвращает позицию области в текстовом макете, которая будет обработана до редактирования.

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

QString QTextLayout::preeditAreaText() const

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

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

int QTextLayout::previousCursorPosition(int oldPos, QTextLayout::CursorMode mode = SkipCharacters) const

Возвращает первую допустимую позицию курсора перед oldPos, учитывая заданный режим курсора mode. Возвращает значение oldPos, если oldPos не является допустимой позицией курсора.

См. также isValidCursorPosition() и nextCursorPosition().

int QTextLayout::rightCursorPosition(int oldPos) const

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

См. также leftCursorPosition() и nextCursorPosition().

void QTextLayout::setCacheEnabled(bool enable)

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

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

void QTextLayout::setCursorMoveStyle(Qt::CursorMoveStyle style)

Устанавливает визуальный стиль перемещения курсора на заданный style. Если QTextLayout подкрепляется документом, вы можете проигнорировать это и использовать опцию в QTextDocument, эта опция предназначена для виджетов, таких как QLineEdit или пользовательских виджетов без QTextDocument. Значение по умолчанию — Qt::LogicalMoveStyle.

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

void QTextLayout::setFont(const QFont &font)

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

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

void QTextLayout::setFormats(const QVector<QTextLayout::FormatRange> &formats)

Устанавливает дополнительные форматы, поддерживаемые текстовым макетом, в formats. Форматы применяются с текстом предварительной области.

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

См. также formats() и clearFormats().

void QTextLayout::setPosition(const QPointF &p)

Перемещает текстовый макет в точку p.

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

void QTextLayout::setPreeditArea(int position, const QString &text)

Устанавливает position и text области в макете, которая обрабатывается перед редактированием. Макет аннулируется и должен быть выведен заново.

См. также preeditAreaPosition() и preeditAreaText().

void QTextLayout::setText(const QString &string)

Устанавливает текст макета на заданную string. Макет аннулируется и должен быть выведен заново.

Обратите внимание, что при использовании этого QTextLayout как части QTextDocument этот метод не будет иметь эффекта.

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

void QTextLayout::setTextOption(const QTextOption &option)

Устанавливает структуру опций текста, которая управляет процессом вывода, на заданную option.

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

QString QTextLayout::text() const

Возвращает текст макета.

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

const QTextOption &QTextLayout::textOption() const

Возвращает текущие параметры текста, используемые для управления процессом вывода.

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

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qtextlayout.html

Spec-Zone.ru

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