Класс QGraphicsTransform
Класс QGraphicsTransform — это абстрактный базовый класс для построения сложных преобразований QGraphicsItems. Подробнее...
| Заголовок: | #include <QGraphicsTransform> |
| qmake: | QT += widgets |
| С момента: | Qt 4.6 |
| Наследует: | QObject |
| Наследуется: |
Открытые функции
| QGraphicsTransform(QObject *parent = Q_NULLPTR) | |
| ~QGraphicsTransform() | |
| virtual void | applyTo(QMatrix4x4 *matrix) const = 0 |
- 32 открытых функции унаследованы от QObject
Защищенные слоты
| void | update() |
Дополнительные унаследованные члены
- 1 свойство унаследовано от QObject
- 1 открытый слот унаследован от QObject
- 2 сигналы унаследованы от QObject
- 11 статические открытые члены унаследованы от 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 = Q_NULLPTR)
Конструктор нового QGraphicsTransform с заданным parent.
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.9/qgraphicstransform.html