Класс QGraphicsTransform
Класс QGraphicsTransform — это абстрактный базовый класс для построения сложных преобразований над QGraphicsItems. Подробнее...
| Заголовок: | #include <QGraphicsTransform> |
| CMake: | find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| Наследует: | QObject |
| Наследуется от: |
Открытые функции
| 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.1/qgraphicstransform.html