Класс QAbstractTextDocumentLayout
Класс QAbstractTextDocumentLayout — это абстрактный базовый класс, используемый для реализации пользовательских макетов для QTextDocuments. Подробнее...
| Заголовок: | #include <QAbstractTextDocumentLayout> |
| qmake: | QT += gui |
| Наследует: | QObject |
Примечание: Все функции в этом классе являются повторно входящими.
Публичные типы
| PaintContext | |
| Selection |
Публичные функции
| QAbstractTextDocumentLayout(QTextDocument *document) | |
| QString | anchorAt(const QPointF &position) const |
| virtual QRectF | blockBoundingRect(const QTextBlock &block) const = 0 |
| 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.
QString QAbstractTextDocumentLayout::anchorAt(const QPointF &position) const
Возвращает ссылку на якорь, для которого задано данное position, или пустую строку, если такого якоря нет в этой точке.
[pure virtual] QRectF QAbstractTextDocumentLayout::blockBoundingRect(const QTextBlock &block) const
Возвращает прямоугольник, ограничивающий block.
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.13/qabstracttextdocumentlayout.html