Spec-Zone.ru › Qt

Класс QGraphicsTransform

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

Заголовок: #include <QGraphicsTransform>
CMake: find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Наследует: QObject
Наследуется от:

QGraphicsRotation и QGraphicsScale

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

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

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. Когда к элементу QGraphicsItem применяются несколько объектов QGraphicsTransform, все преобразования вычисляются в трехмерном пространстве, а проекция обратно на двумерное пространство происходит только после применения последнего QGraphicsTransform. Исключением из этого является QGraphicsRotation, который проецирует обратно на двумерное пространство после каждого вращения, чтобы сохранить эффект перспективы вокруг осей 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.2/qgraphicstransform.html

Spec-Zone.ru

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