Класс 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 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 = Q_NULLPTR) |
- 32 открытые функции, унаследованные от 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
- 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 (длина строки).
Замена текста представляет собой комбинацию удаления и вставки. Например, если текст «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.
[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.
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 = 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 должны излучать этот сигнал, когда макет блока изменился, чтобы перерисовать.
Эта функция была представлена в Qt 4.4.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qabstracttextdocumentlayout.html