Spec-Zone.ru › Qt

Класс QAbstractTextDocumentLayout

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

Заголовок: #include <QAbstractTextDocumentLayout>
CMake: find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui)
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.

[signal] void QAbstractTextDocumentLayout::documentSizeChanged(const QSizeF &newSize)

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

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

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

[signal] void QAbstractTextDocumentLayout::pageCountChanged(int newPages)

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

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

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

[signal] void QAbstractTextDocumentLayout::update(const QRectF &rect = QRectF(0., 0., 1000000000., 1000000000.))

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

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

[signal] void QAbstractTextDocumentLayout::updateBlock(const QTextBlock &block)

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

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

END_OF_DOCUMENT_MARKER ```

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

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

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

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

[since 5.14] 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.

[since 5.8] 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, если не найдена действительная позиция курсора.

[since 5.8] 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().

[since 5.2] void QAbstractTextDocumentLayout::unregisterHandler(int objectType, QObject *component = nullptr)

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

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

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

Spec-Zone.ru

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