QGraphicsTransform 类
QGraphicsTransform 类是一个抽象基类,用于在 QGraphicsItems 上构建高级变换。更多...
头文件 | #include <QGraphicsTransform> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake | QT += widgets |
继承 | QObject |
继承自 |
公有函数
QGraphicsTransform(QObject *parent = nullptr) | |
virtual | ~QGraphicsTransform() |
virtual void | applyTo(QMatrix4x4 *matrix) const = 0 |
保护槽
void | update() |
详细描述
作为 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()、QGraphicsScale和QGraphicsRotation。
成员函数文档
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.以及/或其他国家的商标。所有其他商标均为各自所有者的财产。