Spec-Zone.ru › Qt 6.0

Класс 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.

Изменение размера документа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 изменился для перерисовки.

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, соответствующими начальной позиции символа изменения, количеству удалённых символов и количеству добавленных символов.

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

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

Для подклассов 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.0/qabstracttextdocumentlayout.html

Spec-Zone.ru

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