class QGraphicsTransform#

QGraphicsTransform 类是构造 QGraphicsItems 上的高级变换的抽象基类。 更多信息

Inheritance diagram of PySide6.QtWidgets.QGraphicsTransform

继承自: QGraphicsScale, QGraphicsRotation

自版本 4.6 开始。

概要#

方法#

虚函数#

#

注解

本文档可能包含从 C++ 自动翻译到 Python 的代码片段。我们始终欢迎对片段翻译的贡献。如果您看到翻译问题,也可以通过在 https:/bugreports.qt.io/projects/PYSIDE 上创建工单来告知我们。

详细描述#

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

QGraphicsItem 允许您将任意数量的QGraphicsTransform实例分配给一个QGraphicsItem 。每个QGraphicsTransform按顺序、一个接一个地应用到它所分配的QGraphicsItem上。

QGraphicsTransform对动画特别有用。虽然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 可以与 setTransform()setRotation() 以及 setScale() 一起使用。

__init__([parent=None])#
参数:

parentQObject

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

abstract applyTo(matrix)#
参数:

matrixQMatrix4x4

这个纯虚方法必须在派生类中重写。

它将此转换应用于 matrix

另请参阅

transform() toTransform()

update()#

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

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

另请参阅

applyTo()