Класс QAbstractTextDocumentLayout
Класс QAbstractTextDocumentLayout — это абстрактный базовый класс, используемый для реализации пользовательских макетов для QTextDocuments. Подробнее...
| Заголовок: | #include <QAbstractTextDocumentLayout> |
| qmake: | QT += gui |
| Наследуется от: | QObject |
| Наследует: |
Примечание: Все функции в этом классе являются реентерабельными.
Открытые типы
| класс | PaintContext |
| класс | Selection |
Открытые функции
| QAbstractTextDocumentLayout(QTextDocument *document) | |
| QString | anchorAt(const QPointF &position) const |
| виртуальный QRectF | blockBoundingRect(const QTextBlock &block) const = 0 |
| QTextDocument * | document() const |
| виртуальный QSizeF | documentSize() const = 0 |
| виртуальный void | draw(QPainter *painter, const PaintContext &context) = 0 |
| виртуальный QRectF | frameBoundingRect(QTextFrame *frame) const = 0 |
| QTextObjectInterface * | handlerForObject(int objectType) const |
| виртуальный int | hitTest(const QPointF &point, Qt::HitTestAccuracy accuracy) const = 0 |
| виртуальный int | pageCount() const = 0 |
| QPaintDevice * | paintDevice() const |
| void | registerHandler(int objectType, QObject *component) |
| void | setPaintDevice(QPaintDevice *device) |
| void | unregisterHandler(int objectType, QObject *component = Q_NULLPTR) |
- 31 открытая функция унаследованная от QObject
Сигналы
| void | documentSizeChanged(const QSizeF &newSize) |
| void | pageCountChanged(int newPages) |
| void | update(const QRectF &rect = QRectF( 0., 0., 1000000000., 1000000000. )) |
| void | updateBlock(const QTextBlock &block) |
- 2 сигнала унаследованных от QObject
Защищённые функции
| виртуальный void | documentChanged(int position, int charsRemoved, int charsAdded) = 0 |
| виртуальный void | drawInlineObject(QPainter *painter, const QRectF &rect, QTextInlineObject object, int posInDocument, const QTextFormat &format) |
| QTextCharFormat | format(int position) |
| виртуальный void | positionInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format) |
| виртуальный void | resizeInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format) |
- 9 защищённых функций унаследованных от QObject
Дополнительные унаследованные члены
- 1 свойство унаследованное от QObject
- 1 открытый слот унаследованный от QObject
- 11 статических открытых членов унаследованных от QObject
Подробное описание
Класс QAbstractTextDocumentLayout — это абстрактный базовый класс, используемый для реализации пользовательских макетов для QTextDocuments.
Стандартный макет, предоставляемый Qt, может обрабатывать простую текстовую обработку, включая встраиваемые изображения, списки и таблицы.
Некоторые приложения, например, текстовый процессор или приложение DTP, могут потребовать больше функций, чем те, которые предоставляются движком макета Qt, в этом случае вы можете создать подкласс QAbstractTextDocumentLayout, чтобы обеспечить пользовательское поведение макета для ваших текстовых документов.
Экземпляр подкласса QAbstractTextDocumentLayout может быть установлен на объект QTextDocument с помощью функции setDocumentLayout().
Вы можете вставлять пользовательские объекты в QTextDocument; см. описание класса QTextObjectInterface для получения подробностей.
См. также QTextObjectInterface.
Документация по функциям-членам
QAbstractTextDocumentLayout::QAbstractTextDocumentLayout(QTextDocument *document)
Создаёт новый макет текстового документа для данного document.
QString QAbstractTextDocumentLayout::anchorAt(const QPointF &position) const
Возвращает ссылку на якорь в заданной position или пустую строку, если якоря в этой точке нет.
QRectF QAbstractTextDocumentLayout::blockBoundingRect(const QTextBlock &block) const
Возвращает прямоугольник, ограничивающий block.
QTextDocument *QAbstractTextDocumentLayout::document() const
Возвращает текстовый документ, на котором работает этот макет.
void QAbstractTextDocumentLayout::documentChanged(int position, int charsRemoved, int charsAdded)
Эта функция вызывается всякий раз, когда содержимое документа меняется. Изменение происходит, когда текст вставляется, удаляется или происходит их сочетание. Изменение определяется значениями position, charsRemoved и charsAdded, которые соответствуют начальной позиции символа изменения, количеству удалённых символов из документа и количеству добавленных символов.
Например, при вставке текста «Привет» в пустой документ, charsRemoved будет 0, а charsAdded — 5 (длина строки).
Замена текста — это сочетание удаления и вставки. Например, если текст «Привет» заменяется на «Здравствуй», charsRemoved будет 5, а charsAdded — 2.
Для подклассов QAbstractTextDocumentLayout эта функция — центральная функция, где выполняется большая часть работы по расположению и позиционированию содержимого документа.
Например, в подклассе, который организует только блоки текста, реализация этой функции должна выполнять следующее:
- Определите список изменённых QTextBlock(ов) с использованием предоставленных параметров.
- Каждый объект QTextBlock должен быть обработан вместе с соответствующим объектом QTextLayout. Вы можете получить макет QTextBlock с помощью функции QTextBlock::layout(). Эта обработка должна учитывать размер страницы документа.
- Если общее количество страниц изменилось, должно быть отправлено событие pageCountChanged().
- Если общий размер изменился, должно быть отправлено событие documentSizeChanged().
- Должно быть отправлено событие update() для планирования перерисовки областей в макете, которые требуют перерисовки.
См. такжеQTextLayout.
[pure virtual] QSizeF QAbstractTextDocumentLayout::documentSize() const
Возвращает общий размер макета документа.
Эта информация может быть использована виджетами отображения для корректного обновления полос прокрутки.
См. такжеdocumentSizeChanged() и QTextDocument::pageSize.
[signal] void QAbstractTextDocumentLayout::documentSizeChanged(const QSizeF &newSize)
Это событие отправляется, когда размер макета документа изменяется на newSize.
Подклассы QAbstractTextDocumentLayout должны отправлять это событие, когда изменяется общий размер макета документа. Это событие полезно для виджетов, отображающих текстовые документы, поскольку оно позволяет им корректно обновлять полосы прокрутки.
См. такжеdocumentSize().
[pure virtual] void QAbstractTextDocumentLayout::draw(QPainter *painter, const 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.
[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, если не найдена подходящая позиция курсора.
[pure virtual] int QAbstractTextDocumentLayout::pageCount() const
Возвращает количество страниц, содержащихся в макете.
См. такжеpageCountChanged().
[signal] void QAbstractTextDocumentLayout::pageCountChanged(int newPages)
Это событие отправляется, когда количество страниц в макете изменяется; newPages — обновлённое количество страниц.
Подклассы QAbstractTextDocumentLayout должны отправлять это событие, когда количество страниц в макете изменилось. Изменения количества страниц вызваны изменениями в макете или самом содержимом документа.
См. такжеpageCount().
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 = Q_NULLPTR)
Отменяет регистрацию заданного component как обработчика для элементов заданного типа objectType или любого обработчика, если component не указан.
Эта функция была введена в Qt 5.2.
[signal] void QAbstractTextDocumentLayout::update(const QRectF &rect = QRectF( 0., 0., 1000000000., 1000000000. ))
Это событие отправляется, когда прямоугольник rect был обновлён.
Подклассы QAbstractTextDocumentLayout должны отправлять это событие, когда макет содержимого изменяется для перерисовки.
[signal] void QAbstractTextDocumentLayout::updateBlock(const QTextBlock &block)
Это событие отправляется, когда указанный блок block был обновлён.
Подклассы QAbstractTextDocumentLayout должны отправлять это событие, когда макет block изменился для перерисовки.
Эта функция была введена в Qt 4.4.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qabstracttextdocumentlayout.html