Класс 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 |
- 34 открытых функции, унаследованные от QObject
Защищенные слоты
| void | update() |
Дополнительные наследуемые члены
- 1 свойство, унаследованное от QObject
- 1 открытый слот, унаследованный от QObject
- 2 сигнала, унаследованные от QObject
- 1 открытая переменная, унаследованная от QObject
- 10 статические открытые члены, унаследованные от QObject
- 9 защищенных функций, унаследованные от QObject
- 2 защищенные переменные, унаследованные от QObject
Подробное описание
Класс QGraphicsTransform — это абстрактный базовый класс для создания сложных преобразований QGraphicsItems.
В качестве альтернативы QGraphicsItem::transform, QGraphicsTransform позволяет создавать и управлять сложными преобразованиями, которые можно настраивать независимо с помощью специализированных свойств.
QGraphicsItem позволяет назначить любое количество объектов QGraphicsTransform одному QGraphicsItem. Каждый QGraphicsTransform применяется в порядке, один за другим, к QGraphicsItem, которому он назначен.
QGraphicsTransform особенно полезен для анимации. В то время как QGraphicsItem::setTransform() позволяет напрямую назначить любое преобразование элементу, нет прямого способа интерполировать между двумя разными преобразованиями (например, при переходе между двумя состояниями, каждое из которых имеет для элемента другое произвольное преобразование). Используя QGraphicsTransform, вы можете интерполировать значения свойств каждого независимого преобразования. Результирующая операция затем объединяется в одно преобразование, которое применяется к QGraphicsItem.
Преобразования вычисляются в трехмерном пространстве с использованием QMatrix4x4. При применении преобразования к QGraphicsItem, оно будет спроецировано обратно в двумерное QTransform. Если несколько объектов QGraphicsTransform применяются к QGraphicsItem, все преобразования вычисляются в трехмерном пространстве, а проекция обратно в 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/archives/qt-5.11/qgraphicstransform.html