Класс 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) |
- 34 функций публичного доступа, унаследованных от 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
Защищенные функции
| 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) |
- 9 защищенных функций, унаследованных от QObject
Дополнительные унаследованные члены
- 1 свойство, унаследованное от QObject
- 1 слот публичного доступа, унаследованный от QObject
- 1 переменная публичного доступа, унаследованная от QObject
- 10 статических членов публичного доступа, унаследованных от QObject
- 2 защищенные переменные, унаследованные от 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, соответствующими начальной позиции символа изменения, числу удалённых символов из документа и числу добавленных символов.
Например, при вставке текста "Hello" в пустой документ значение 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 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().
[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 = 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 должны излучать этот сигнал, когда макет блока изменился, чтобы перерисовать.
Эта функция была представлена в Qt 4.4.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qabstracttextdocumentlayout.html