Spec-Zone.ru › Qt 5.9

Класс QTextObjectInterface

Класс QTextObjectInterface позволяет рисовать пользовательские текстовые объекты в QTextDocument. Подробнее...

Заголовок: #include <QTextObjectInterface>
qmake: QT += gui
С момента: Qt 4.5
  • Список всех членов, включая унаследованные

Открытые функции

virtual ~QTextObjectInterface()
virtual void drawObject(QPainter *painter, const QRectF &rect, QTextDocument *doc, int posInDocument, const QTextFormat &format) = 0
virtual QSizeF intrinsicSize(QTextDocument *doc, int posInDocument, const QTextFormat &format) = 0

Подробное описание

Класс QTextObjectInterface позволяет рисовать пользовательские текстовые объекты в QTextDocument.

Текстовый объект описывает структуру одного или нескольких элементов в текстовом документе; например, изображения, импортированные из HTML, реализуются с помощью текстовых объектов. Текстовый объект знает, как выкладывать и рисовать свои элементы при рендеринге документа.

Qt позволяет вставлять пользовательские текстовые объекты в документ, зарегистрировав пользовательский тип объекта с помощью QTextCharFormat. Для этого типа также необходимо реализовать QTextObjectInterface и зарегистрировать его в QAbstractTextDocumentLayout документа. При встрече типа объекта во время рендеринга QTextDocument вызываются функции интерфейса intrinsicSize() и drawObject().

Следующий список поясняет необходимые шаги для вставки пользовательского текстового объекта в документ:

  • Выберите objectType. objectType — целое число со значением, большим или равным QTextFormat::UserObject.
  • Создайте объект QTextCharFormat и установите тип объекта в выбранный тип, используя функцию setObjectType().
  • Реализуйте класс QTextObjectInterface.
  • Вызовите QAbstractTextDocumentLayout::registerHandler() с экземпляром вашего подкласса QTextObjectInterface, чтобы зарегистрировать ваш тип объекта.
  • Вставьте QChar::ObjectReplacementCharacter с указанным выше QTextCharFormat выбранного типа объекта в документ. Как уже упоминалось, функции QTextObjectInterface intrinsicSize() и drawObject() будут вызваны с QTextFormat в качестве параметра всякий раз, когда встречается символ замены.

Класс, реализующий текстовый объект, должен наследовать как QObject, так и QTextObjectInterface. QObject должен быть первым унаследованным классом. Например:

class SvgTextObject : public QObject, public QTextObjectInterface
{
    Q_OBJECT
    Q_INTERFACES(QTextObjectInterface)

Данные текстового объекта обычно хранятся в QTextCharFormat с помощью QTextCharFormat::setProperty() и затем извлекаются с помощью QTextCharFormat::property().

Предупреждение: Операции копирования и вставки игнорируют пользовательские текстовые объекты.

См. также Пример текстового объекта, QTextCharFormat и QTextLayout.

Документация по функциям-членам

[virtual] QTextObjectInterface::~QTextObjectInterface()

Уничтожает этот объект QTextObjectInterface.

[pure virtual] void QTextObjectInterface::drawObject(QPainter *painter, const QRectF &rect, QTextDocument *doc, int posInDocument, const QTextFormat &format)

Рисует этот текстовый объект с помощью указанного painter.

Размер прямоугольника rect, в котором нужно рисовать, — это размер, ранее рассчитанный функцией intrinsicSize(). Позиция прямоугольника относительна к painter.

Вы также получаете документ (doc) и позицию (posInDocument) format в этом документе.

См. также intrinsicSize().

[pure virtual] QSizeF QTextObjectInterface::intrinsicSize(QTextDocument *doc, int posInDocument, const QTextFormat &format)

Функция intrinsicSize() возвращает размер текстового объекта, представленного format в данном документе (doc) в данной позиции (posInDocument).

Рассчитанный размер будет использоваться для последующих вызовов drawObject() для этого format.

См. также drawObject().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qtextobjectinterface.html

Spec-Zone.ru

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