Spec-Zone.ru › Qt 5.15

Класс QGraphicsTransform

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

Заголовок: #include <QGraphicsTransform>
qmake: QT += widgets
С тех пор: Qt 4.6
Наследуется от: QObject
Наследуется:

QGraphicsRotation и QGraphicsScale

Этот класс был представлен в Qt 4.6.

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

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

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.

Преобразования вычисляются в истинном трехмерном пространстве с помощью 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.

void QGraphicsTransform::update()

Уведомляет, что данное преобразование изменило параметры таким образом, что applyTo() вернёт результат, отличающийся от предыдущего.

При реализации собственного пользовательского преобразования графики, вы должны вызвать эту функцию каждый раз, когда вы изменяете параметр, чтобы QGraphicsItem знал, что его преобразование необходимо обновить.

См. также applyTo().

~QGraphicsTransform::~QGraphicsTransform()

Удаляет преобразование графики.

void QGraphicsTransform::applyTo(QMatrix4x4 *matrix) const

Этот чистый виртуальный метод должен быть переопределён в производных классах.

Применяет данное преобразование к matrix.

См. также QGraphicsItem::transform() и QMatrix4x4::toTransform().

Spec-Zone.ru

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