Spec-Zone.ru › Qt 5.15

Класс QAbstractTextDocumentLayout

Класс QAbstractTextDocumentLayout — это абстрактный базовый класс, используемый для реализации пользовательских макетов для QTextDocuments. Подробнее...

Заголовок: #include <QAbstractTextDocumentLayout>
qmake: QT += gui
Наследуется от: QObject
Наследует:

QPlainTextDocumentLayout

  • Список всех членов, включая наследуемые

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

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

Структура PaintContext
Структура Selection

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

QAbstractTextDocumentLayout(QTextDocument *document)
QString anchorAt(const QPointF &position) const
virtual QRectF blockBoundingRect(const QTextBlock &block) const = 0
QTextBlock blockWithMarkerAt(const QPointF &pos) const
QTextDocument * document() const
virtual QSizeF documentSize() const = 0
virtual void draw(QPainter *painter, const QAbstractTextDocumentLayout::PaintContext &context) = 0
QTextFormat formatAt(const QPointF &pos) const
virtual QRectF frameBoundingRect(QTextFrame *frame) const = 0
QTextObjectInterface * handlerForObject(int objectType) const
virtual int hitTest(const QPointF &point, Qt::HitTestAccuracy accuracy) const = 0
QString imageAt(const QPointF &pos) const
virtual int pageCount() const = 0
QPaintDevice * paintDevice() const
void registerHandler(int objectType, QObject *component)
void setPaintDevice(QPaintDevice *device)
void unregisterHandler(int objectType, QObject *component = nullptr)

Сигналы

void documentSizeChanged(const QSizeF &newSize)
void pageCountChanged(int newPages)
void update(const QRectF &rect = QRectF(0., 0., 1000000000., 1000000000.))
void updateBlock(const QTextBlock &block)

Защищенные функции

virtual void documentChanged(int position, int charsRemoved, int charsAdded) = 0
virtual void drawInlineObject(QPainter *painter, const QRectF &rect, QTextInlineObject object, int posInDocument, const QTextFormat &format)
QTextCharFormat format(int position)
virtual void positionInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format)
virtual void resizeInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format)

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

Стандартный макет, предоставляемый Qt, может обрабатывать простую текстовую обработку, включая встраиваемые изображения, списки и таблицы.

Некоторые приложения, например, текстовый процессор или приложение DTP, могут потребовать больше функций, чем те, которые предоставляет движок макета Qt, в этом случае вы можете подклассировать QAbstractTextDocumentLayout, чтобы обеспечить пользовательское поведение макета для ваших текстовых документов.

Экземпляр подкласса QAbstractTextDocumentLayout может быть установлен на объект QTextDocument с помощью функции setDocumentLayout().

Вы можете вставлять пользовательские объекты в QTextDocument; см. описание класса QTextObjectInterface для получения подробностей.

См. также QTextObjectInterface.

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

QAbstractTextDocumentLayout::QAbstractTextDocumentLayout(QTextDocument *document)

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

Изменение размера документаvoid QAbstractTextDocumentLayout::documentSizeChanged(const QSizeF &newSize)

Этот сигнал испускается, когда размер макета документа изменяется на newSize.

Подклассы QAbstractTextDocumentLayout должны испускать этот сигнал, когда изменяется размер всего макета документа. Этот сигнал полезен для виджетов, отображающих текстовые документы, поскольку он позволяет им правильно обновлять полосы прокрутки.

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

Изменение количества страницvoid QAbstractTextDocumentLayout::pageCountChanged(int newPages)

Этот сигнал испускается, когда количество страниц в макете изменяется; newPages — обновленное количество страниц.

Подклассы QAbstractTextDocumentLayout должны испускать этот сигнал, когда изменилось количество страниц в макете. Изменения в количестве страниц вызваны изменениями в макете или самом содержимом документа.

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

Обновлениеvoid QAbstractTextDocumentLayout::update(const QRectF &rect = QRectF(0., 0., 1000000000., 1000000000.))

Этот сигнал испускается, когда прямоугольник rect был обновлен.

Подклассы QAbstractTextDocumentLayout должны испускать этот сигнал, когда макет содержимого изменяется, чтобы перерисовать.

Обновить блокvoid QAbstractTextDocumentLayout::updateBlock(const QTextBlock &block)

Этот сигнал испускается, когда указанный block был обновлен.

Подклассы QAbstractTextDocumentLayout должны испускать этот сигнал, когда макет block изменился, чтобы перерисовать.

Эта функция была представлена в Qt 4.4.

END_OF_DOCUMENT_MARKER

QString QAbstractTextDocumentLayout::anchorAt(const QPointF &position) const

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

[pure virtual] QRectF QAbstractTextDocumentLayout::blockBoundingRect(const QTextBlock &block) const

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

QTextBlock QAbstractTextDocumentLayout::blockWithMarkerAt(const QPointF &pos) const

Возвращает блок (вероятно, элемент списка), маркер которого находится в заданной позиции pos.

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

QTextDocument *QAbstractTextDocumentLayout::document() const

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

[pure virtual protected] void QAbstractTextDocumentLayout::documentChanged(int position, int charsRemoved, int charsAdded)

Эта функция вызывается всякий раз, когда содержимое документа изменяется. Изменение происходит при вставке, удалении или их комбинации. Изменение задаётся параметрами position, charsRemoved и charsAdded, соответствующими начальной позиции символа изменения, количеству удалённых символов в документе и количеству добавленных символов.

Например, при вставке текста "Hello" в пустой документ, charsRemoved будет 0, а charsAdded — 5 (длина строки).

Замена текста представляет собой комбинацию удаления и вставки. Например, если текст "Hello" заменяется на "Hi", charsRemoved будет 5, а charsAdded — 2.

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

Например, в подклассе, который только организует блоки текста, реализация этой функции должна сделать следующее:

  • Определить список изменённых блоков QTextBlock с использованием предоставленных параметров.
  • Каждый объект QTextBlock соответствует объекту QTextLayout, который необходимо обработать. Вы можете получить форматирование QTextBlock с помощью функции QTextBlock::layout(). Эта обработка должна учитывать размер страницы документа.
  • Если изменилось общее количество страниц, следует выдать сигнал pageCountChanged().
  • Если изменился общий размер, следует выдать сигнал documentSizeChanged().
  • Следует выдать сигнал update(), чтобы запланировать перерисовку областей в макете, которые требуют перерисовки.

См. также QTextLayout.

[pure virtual] QSizeF QAbstractTextDocumentLayout::documentSize() const

Возвращает общий размер макета документа.

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

См. также documentSizeChanged() и QTextDocument::pageSize.

[pure virtual] void QAbstractTextDocumentLayout::draw(QPainter *painter, const QAbstractTextDocumentLayout::PaintContext &context)

Рисует макет с помощью заданного painter, используя заданный context.

[virtual protected] void QAbstractTextDocumentLayout::drawInlineObject(QPainter *painter, const QRectF &rect, QTextInlineObject object, int posInDocument, const QTextFormat &format)

Эта функция вызывается для отрисовки встроенного объекта object с помощью заданного painter внутри прямоугольника rect, используя заданный формат текста format.

posInDocument указывает позицию объекта в документе.

По умолчанию вызывается drawObject() в обработчиках объектов. Эта функция вызывается только в Qt. Подклассы могут переопределить эту функцию для настройки отрисовки встроенных объектов.

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

[protected] QTextCharFormat QAbstractTextDocumentLayout::format(int position)

Возвращает формат символа, применимый в данной позиции position.

QTextFormat QAbstractTextDocumentLayout::formatAt(const QPointF &pos) const

Возвращает формат текста в заданной позиции pos.

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

[pure virtual] QRectF QAbstractTextDocumentLayout::frameBoundingRect(QTextFrame *frame) const

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

QTextObjectInterface *QAbstractTextDocumentLayout::handlerForObject(int objectType) const

Возвращает обработчик для объектов заданного типа objectType.

[pure virtual] int QAbstractTextDocumentLayout::hitTest(const QPointF &point, Qt::HitTestAccuracy accuracy) const

Возвращает позицию курсора для заданной точки point с заданной точностью accuracy. Возвращает -1, если не найдена допустимая позиция курсора.

QString QAbstractTextDocumentLayout::imageAt(const QPointF &pos) const

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

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

[pure virtual] int QAbstractTextDocumentLayout::pageCount() const

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

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

QPaintDevice *QAbstractTextDocumentLayout::paintDevice() const

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

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

[virtual protected] void QAbstractTextDocumentLayout::positionInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format)

Форматирует встроенный объект item, используя заданный формат текста format.

posInDocument указывает позицию объекта в документе.

По умолчанию ничего не делает. Эта функция вызывается только в Qt. Подклассы могут переопределить эту функцию для настройки позиционирования встроенных объектов.

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

void QAbstractTextDocumentLayout::registerHandler(int objectType, QObject *component)

Регистрирует заданный компонент component как обработчик для элементов заданного типа objectType.

Примечание: registerHandler() должен вызываться один раз для каждого типа объекта. Это означает, что для нескольких заменяемых символов одного типа объекта есть только один обработчик.

Макет текстового документа не принимает владение над component.

[virtual protected] void QAbstractTextDocumentLayout::resizeInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format)

Устанавливает размер встроенного объекта item, соответствующий формату текста format.

posInDocument указывает позицию объекта в документе.

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

void QAbstractTextDocumentLayout::setPaintDevice(QPaintDevice *device)

Устанавливает устройство рисования для отрисовки макета документа на заданном устройстве device.

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

void QAbstractTextDocumentLayout::unregisterHandler(int objectType, QObject *component = nullptr)

Удаляет регистрацию заданного компонента component как обработчика для элементов заданного типа objectType, или любого обработчика, если component не указан.

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

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

Spec-Zone.ru

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