Spec-Zone.ru › Qt 5.13

Класс QGraphicsTransform

Класс QGraphicsTransform — это абстрактный базовый класс для создания сложных преобразований QGraphicsItems. Подробнее...

Заголовок: #include <QGraphicsTransform>
qmake: QT += widgets
С версии: Qt 4.6
Наследует: QObject
Наследуется от:

QGraphicsRotation и QGraphicsScale

Этот класс был представлен в Qt 4.6.

  • Список всех членов, включая наследуемые члены

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

QGraphicsTransform(QObject *parent = nullptr)
virtual ~QGraphicsTransform()
virtual void applyTo(QMatrix4x4 *matrix) const = 0

Защищенные слоты

void update()

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

В качестве альтернативы QGraphicsItem::transform, QGraphicsTransform позволяет создавать и управлять сложными преобразованиями, которые могут настраиваться независимо с помощью специализированных свойств.

QGraphicsItem позволяет назначить любое количество экземпляров QGraphicsTransform одному QGraphicsItem. Каждый QGraphicsTransform применяется по порядку, один за другим, к QGraphicsItem, к которому он назначен.

QGraphicsTransform особенно полезен для анимаций. В то время как QGraphicsItem::setTransform() позволяет напрямую назначить любое преобразование элементу, нет прямого способа интерполировать между двумя разными преобразованиями (например, при переходе между двумя состояниями, для каждого из которых у элемента назначено другое произвольное преобразование). Используя QGraphicsTransform, вы можете интерполировать значения свойств каждого независимого преобразования. Результирующая операция затем объединяется в одно преобразование, которое применяется к QGraphicsItem.

Преобразования вычисляются в истинном 3D-пространстве с помощью QMatrix4x4. Когда преобразование применяется к QGraphicsItem, оно будет спроецировано обратно на 2D-QTransform. Когда к QGraphicsItem применяются несколько объектов QGraphicsTransform, все преобразования вычисляются в истинном 3D-пространстве, а проекция обратно на 2D происходит только после применения последнего QGraphicsTransform. Исключением из этого правила является QGraphicsRotation, который проецирует обратно в 2D после каждого поворота, чтобы сохранить эффект перспективы вокруг осей X и Y.

Если вы хотите создать собственное конфигурируемое преобразование, вы можете создать подкласс QGraphicsTransform (или любого существующего подкласса) и переопределить чисто виртуальную функцию applyTo(), которая принимает указатель на QMatrix4x4. Каждая операция, которую вы хотите применить, должна быть представлена в виде свойств (например, customTransform->setVerticalShear(2.5)). Внутри вашего переопределения applyTo() вы можете соответственно изменить предоставленное преобразование.

QGraphicsTransform может использоваться вместе с QGraphicsItem::setTransform(), QGraphicsItem::setRotation() и QGraphicsItem::setScale().

См. такжеQGraphicsItem::transform(), QGraphicsScale и QGraphicsRotation.

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

QGraphicsTransform::QGraphicsTransform(QObject *parent = nullptr)

Создаёт новый QGraphicsTransform с заданным parent.

void QGraphicsTransform::update()

Уведомляет, что операция преобразования изменила свои параметры таким образом, что applyTo() вернёт другой результат, чем прежде.

При реализации собственного пользовательского графического преобразования, вы должны вызывать эту функцию всякий раз, когда вы изменяете параметр, чтобы позволить QGraphicsItem знать, что его преобразование нужно обновить.

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

~QGraphicsTransform::~QGraphicsTransform()

Уничтожает графическое преобразование.

void QGraphicsTransform::applyTo(QMatrix4x4 *matrix) const

Эта чисто виртуальная функция должна быть переопределена в производных классах.

Она применяет это преобразование к matrix.

См. также QGraphicsItem::transform() и QMatrix4x4::toTransform().

Spec-Zone.ru

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