Класс QGraphicsTransform
Класс QGraphicsTransform — это абстрактный базовый класс для построения сложных преобразований над QGraphicsItems. Подробнее...
| Заголовок: | #include <QGraphicsTransform> |
| qmake: | QT += widgets |
| С момента: | Qt 4.6 |
| Наследует: | QObject |
| Наследуется от: |
Открытые функции
| QGraphicsTransform(QObject *parent = nullptr) | |
| virtual | ~QGraphicsTransform() |
| virtual void | applyTo(QMatrix4x4 *matrix) const = 0 |
- 31 открытая функция унаследована от QObject
Статические открытые члены
| const QMetaObject | staticMetaObject |
- 9 статических открытых членов унаследовано от QObject
Защищенные слоты
| void | update() |
Дополнительные унаследованные члены
- 1 свойство унаследовано от QObject
- 1 открытый слот унаследован от QObject
- 2 сигнала унаследованы от QObject
- 9 защищенных функций унаследованы от QObject
Подробное описание
Класс QGraphicsTransform — это абстрактный базовый класс для построения сложных преобразований над QGraphicsItems.
В качестве альтернативы 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.
[virtual] QGraphicsTransform::~QGraphicsTransform()
Удаляет графическое преобразование.
[pure virtual] void QGraphicsTransform::applyTo(QMatrix4x4 *matrix) const
Этот чистый виртуальный метод должен быть переопределён в производных классах.
Он применяет это преобразование к matrix.
См. также QGraphicsItem::transform() и QMatrix4x4::toTransform().
[protected slot] void QGraphicsTransform::update()
Уведомляет о том, что эта операция преобразования изменила свои параметры таким образом, что applyTo() вернёт другой результат, чем раньше.
При реализации собственного пользовательского графического преобразования вы должны вызывать эту функцию каждый раз при изменении параметра, чтобы QGraphicsItem знал, что его преобразование нужно обновить.
См. также applyTo().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qgraphicstransform.html