Spec-Zone.ru › Qt 6.0

Класс QGraphicsTransform

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

Заголовок: #include <QGraphicsTransform>
CMake: find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Наследуется от: QObject
Наследующие классы:

QGraphicsRotation и QGraphicsScale

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

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

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-6.0/qgraphicstransform.html

Spec-Zone.ru

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