Spec-Zone.ru › Qt 5.9

Класс QTextLayout

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

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

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

Публичные типы

класс FormatRange
перечисление CursorMode { SkipCharacters, SkipWords }

Публичные функции

QTextLayout()
QTextLayout(const QString &text)
QTextLayout(const QString &text, const QFont &font, QPaintDevice *paintdevice = Q_NULLPTR)
~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<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<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, CursorMode mode = SkipCharacters) const
QPointF position() const
int preeditAreaPosition() const
QString preeditAreaText() const
int previousCursorPosition(int oldPos, 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<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
bool operator!=(const FormatRange &lhs, const FormatRange &rhs)
bool operator==(const FormatRange &lhs, const FormatRange &rhs)

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

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

Он предлагает множество функций, ожидаемых от современного движка вывода текста, включая соответствие 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.

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

перечисление QTextLayout::CursorMode

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

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

QTextLayout::QTextLayout()

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

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

QTextLayout::QTextLayout(const QString &text)

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

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

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

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

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

bool QTextLayout::operator!=(const FormatRange &lhs, const FormatRange &rhs)

Возвращает true, если какие-либо из start, length, или format полей в lhs и rhs содержат разные значения соответственно.

bool QTextLayout::operator==(const FormatRange &lhs, const FormatRange &rhs)

Возвращает true, если start, length, и format поля в lhs и rhs содержат одинаковые значения соответственно.

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

Spec-Zone.ru

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