QGraphicsTransform 类

QGraphicsTransform 类是一个抽象基类,用于在 QGraphicsItems 上构建高级变换。更多...

头文件 #include <QGraphicsTransform>
CMakefind_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmakeQT += widgets
继承 QObject
继承自

QGraphicsRotationQGraphicsScale

公有函数

QGraphicsTransform(QObject *parent = nullptr)
virtual~QGraphicsTransform()
virtual voidapplyTo(QMatrix4x4 *matrix) const = 0

保护槽

voidupdate()

详细描述

作为 QGraphicsItem::transform 的替代,QGraphicsTransform 允许您创建和控制高级变换,这些变换可以通过专用属性独立配置。

QGraphicsItem 允许您为每个 QGraphicsItem 分配任意数量的 QGraphicsTransform 实例。每个 QGraphicsTransform 按顺序依次应用到被分配的 QGraphicsItem

QGraphicsTransform 特别适用于动画。虽然 QGraphicsItem::setTransform() 允许您直接将任何变换分配给对象,但没有直接的方法在两种不同的变换之间进行插值(例如,在两种状态之间过渡,每种状态的对象都分配了不同的变换)。使用 QGraphicsTransform 可以在每个独立变换的属性值之间进行插值。然后将此操作合并为一个单一变换,并将其应用到 QGraphicsItem

变换使用 QMatrix4x4 在真实 3D 空间中进行计算。当变换应用到 QGraphicsItem 时,它将被投影回 2D QTransform。当多个 QGraphicsTransform 对象应用到 QGraphicsItem 时,所有变换都在真实 3D 空间中进行计算,只有在最后一个 QGraphicsTransform 应用后才会将其投影回 2D。例外情况是 QGraphicsRotation,它在每个旋转后会将其投影回 2D 以保持 X 和 Y 轴周围的角度效果。

如果要创建自己的可配置的转换,您可以创建一个QGraphicsTransform(或其任何现有子类)的子类,并重新实现纯虚函数applyTo(),它接受一个指向QMatrix4x4的指针。每个要应用的操作都应该作为属性公开(例如,customTransform->setVerticalShear(2.5))。在applyTo()的实现中,您可以相应地修改提供的转换。

QGraphicsTransform可以与QGraphicsItem::setTransform()、QGraphicsItem::setRotation()和QGraphicsItem::setScale()一起使用。

另请参阅 QGraphicsItem::transform()、QGraphicsScaleQGraphicsRotation

成员函数文档

QGraphicsTransform::QGraphicsTransform(QObject *parent = nullptr)

使用给定的parent构造一个新的QGraphicsTransform。

[虚拟NonThrowing] QGraphicsTransform::~QGraphicsTransform()

销毁图形转换。

[纯虚] void QGraphicsTransform::applyTo(QMatrix4x4 *matrix) const

必须在派生类中重新实现这个纯虚方法。

它将此转换应用于matrix

另请参阅 QGraphicsItem::transform()和QMatrix4x4::toTransform

[受保护槽函数] void QGraphicsTransform::update()

通知此转换操作已经更改了其参数,使得applyTo()将返回与前不同的结果。

当实现您自己的自定义图形转换时,您必须每次更改参数时都调用此函数,以便让QGraphicsItem知道其转换需要更新。

另请参阅 applyTo

© 2024 The Qt Company Ltd. 此处包含的文档贡献是各自所有者的版权。此处的文档是根据Free Software Foundation发布的GNU自由文档许可协议版本1.3许可的。Qt和相应的商标是芬兰的The Qt Company Ltd.以及/或其他国家的商标。所有其他商标均为各自所有者的财产。