Spec-Zone.ru › Qt 5.14

Класс QGraphicsTransform

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

Заголовок: #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. Когда несколько объектов QGraphicsTransform применяются к элементу QGraphicsItem, все преобразования вычисляются в истинном 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.

[protected slot] void QGraphicsTransform::update()

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

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

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

[virtual] QGraphicsTransform::~QGraphicsTransform()

Удаляет преобразование графики.

[pure virtual] void QGraphicsTransform::applyTo(QMatrix4x4 *matrix) const

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

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

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

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

Spec-Zone.ru

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