class QGraphicsItem#

PySide6.QtWidgets.QGraphicsItem 类是所有在 PySide6.QtWidgets.QGraphicsScene 场景中的图形项的基类。 更多信息...

继承自: QGraphicsPixmapItemQGraphicsLineItemQGraphicsItemGroupQAbstractGraphicsShapeItemQGraphicsSimpleTextItemQGraphicsRectItemQGraphicsPolygonItemQGraphicsPathItemQGraphicsEllipseItemQGraphicsObjectQGraphicsWidgetQGraphicsProxyWidgetQGraphicsTextItemQGraphicsSvgItemQGraphicsVideoItemQLegendQChartQPolarChart

概述#

方法#

虚方法#

注意

此文档可能包含从C++自动翻译为Python的代码片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译存在问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE创建工单的方式让我们知道。

详细描述#

警告

此部分包含从C++自动翻译为Python的片段,可能包含错误。

它为您编写自己的自定义项目提供了一个轻量级的基础。这包括定义项目的几何形状、碰撞检测、其绘制实现以及通过事件处理器进行的项目交互。《QGraphicsItem》是图形视图框架的一部分。

../../_images/graphicsview-items.png

为了方便起见,Qt提供了一系列标准图形项目,用于最常见的形状。

该项目的所有几何信息都是基于其本地坐标系。项目的位置( pos() )是唯一不使用本地坐标进行操作的函数,因为它返回的是父坐标中的一个位置。《图形视图坐标系》详细描述了该坐标系。

您可以通过调用setVisible()来设置一个项是否可见(即,绘制并接受事件)。隐藏一个项也将隐藏其子项。同样,您可以通过调用setEnabled()来启用或禁用一项。如果您禁用了一个项,则其所有子项也将被禁用。默认情况下,项既有可见性也有启用量。要切换项选择与否,首先通过设置ItemIsSelectable标志来启用选择,然后调用setSelected()。通常,选择是通过场景在对用户的交互作出反应时切换的。

要编写自己的图形项,首先创建QGraphicsItem的子类,然后开始实现它的两个纯虚拟公共函数:boundingRect(),它返回项所绘制的区域的估计值,以及paint(),它实现实际绘制。例如:

class SimpleItem(QGraphicsItem):

# public
    QRectF boundingRect() override

        penWidth = 1
        return QRectF(-10 - penWidth / 2, -10 - penWidth / 2,
                      20 + penWidth, 20 + penWidth)

    def paint(painter, option,):
               QWidget widget) override

        painter.drawRoundedRect(-10, -10, 20, 20, 5, 5)

boundingRect()函数有许多不同的目的。《QGraphicsScene》基于boundingRect()来索引项,而《QGraphicsView》使用它来裁剪不可见的项,并确定在绘制重叠项时需要重新组合的区域。此外,《QGraphicsItem》的碰撞检测机制使用boundingRect()来提供一个有效的截止值。《collidesWithItem》中的细粒度碰撞算法基于调用shape(),它返回项形状的精确轮廓作为QPainterPath。

碰撞检测可以通过两种方式进行

../../_images/graphicsview-parentchild.png

变换#

QGraphicsItem 除了基位置 pos() 外,还支持投影变换。更改项目变换有多种方法。对于简单的变换,您可以调用方便函数 setRotation()setScale() ,或者将任何变换矩阵传递给 setTransform() 。对于高级变换控制,您还可以通过调用 setTransformations() 来设置多个组合变换。

项目变换是从父元素累积到子元素的,因此如果父元素和子元素都旋转了90度,子元素的总变换将是180度。同样,如果项目父元素缩放为其原始大小的2倍,其子元素也将增加两倍大小。项目的变换不会影响其自身的局部几何形状;所有几何函数(例如 contains()update() 以及所有映射函数)都在局部坐标系中运行。为了方便,QGraphicsItem 提供了函数 sceneTransform() ,它返回项目的总变换矩阵(包括其位置以及所有父元素的位置和变换),以及 scenePos() ,它返回其在场景坐标系中的位置。要重置项目的矩阵,请调用 resetTransform()

某些变换操作的结果依赖于它们的应用顺序。例如,如果您先缩放一个变换,然后旋转它,您可能会得到与先旋转再变换时的不同结果。然而,您在 QGraphicsItem 上设置的变换属性顺序不会影响最终的结果;QGraphicsItem 总是以固定的、定义好的顺序应用属性。

绘制

paint()函数由QGraphicsView调用以绘制对象的内部。对象没有自己的背景或默认填充;在update()中可以进行重绘安排,可选地传递需要重绘的矩形。根据对象是否可见,该对象可能会重新绘制或不会重新绘制;在QGraphicsItem中没有与repaint()等效的函数。

视图绘制对象,首先是父项,然后是子项,按照升序堆叠顺序绘制。您可以调用setZValue()来设置一个项的堆叠顺序,并调用zValue()来测试它,其中z值低的项先于z值高的项进行绘制。堆叠顺序适用于同级的项;父项总是先于其子项绘制。

排序

所有对象都按照定义的、稳定的顺序绘制,并且这个顺序决定了当您单击场景时哪些对象将首先接收到鼠标输入。通常,您无需担心排序,因为对象遵循“自然顺序”,遵循场景的逻辑结构。

项的子项堆叠在父项之上,同级项按照插入顺序堆叠(即,在它们被添加到场景或相同父项中的顺序相同)。如果您先添加项A,然后添加项B,那么B将堆叠在A之上。之后添加项C,则项的堆叠顺序将是A,然后是B,然后是C。

../../_images/graphicsview-zorder.png

以下示例显示了拖放机器人示例中所有身体部位的堆叠顺序。身体是根项(其他所有项都是身体的子项或后代),因此它首先绘制。接下来绘制头部,因为它是身体子项列表中的第一个项。然后绘制上左臂。由于下臂是上臂的子项,因此接着绘制下臂,然后绘制上臂的下一个同级项,即上右臂,依此类推。

对于高级用户,有方法可以修改对象的排序方式

  • 您可以调用 setZValue() 方法在项目上显式地堆叠在其它兄弟项目之上或之下。项目的默认Z值为0。具有相同Z值的项将按照插入顺序堆叠。

  • 您可以调用 stackBefore() 方法来重新排序子项列表。这将直接修改插入顺序。

  • 您可以设置 ItemStacksBehindParent 标志来让子项在其父项后面进行堆叠。

两个兄弟项目的堆叠顺序也适用于每个项目的子项目及其后代项目。因此,如果一个项目在另一个项目之上,则其所有子项目也将在其他项目的所有子项目之上。

事件#

QGraphicsItem 通过虚拟函数 sceneEvent() 接收来自 QGraphicsScene 的事件。这个函数将一些常见事件分发到一组便利的事件处理器中

您可以通过安装事件过滤器来过滤其他任何项的事件。此功能与 Qt 的常规事件过滤器分开(见 QObject::installEventFilter()),仅适用于 QObject 的子类。在通过调用 installSceneEventFilter() 将您的项安装为其他项的事件过滤器后,筛选出的事件将通过虚拟函数 sceneEventFilter() 接收。您可以调用 removeSceneEventFilter() 来删除项事件过滤器。

自定义数据#

有时将自定义数据注册到项中很有用,无论是自定义项还是标准项。您可以通过在任意项上调用 setData() 来在其中存储使用键值对(键为整数,值为 QVariant)的数据。要从项中获取自定义数据,请调用 data() 。此功能本身未受到 Qt 的影响;它提供给用户方便。

class GraphicsItemFlag#

(继承自 enum.Flag) 此枚举描述了您可以设置在项上来切换项行为的各种功能的不同的标志。

所有标志默认都处于禁用状态。

常数

描述

QGraphicsItem.ItemIsMovable

此项支持使用鼠标进行交互式移动。通过单击项然后拖动,项将随鼠标光标一起移动。如果该项有子项,则所有子项也将移动。如果该项是选择的一部分,则所有选中的项也将移动。此功能通过 QGraphicsItem 的鼠标事件处理程序的基本实现作为便利功能提供。

QGraphicsItem.ItemIsSelectable

项目支持选择。启用此功能将启用 setSelected() 以切换项目的选择状态。它还可以让项目在调用 setSelectionArea() 时自动选择,通过单击项目,或在 QGraphicsView 中使用橡皮筋选择。

QGraphicsItem.ItemIsFocusable

项目支持键盘输入焦点(即它是输入项)。启用此标志将允许项目接受焦点,这将再次允许将键事件传递给 keyPressEvent()keyReleaseEvent()

QGraphicsItem.ItemClipsToShape

项目将其自己剪裁到其形状内。项目不能在其形状之外绘制或接收鼠标、平板、拖放或悬停事件。这默认是禁用的。此行为由 QGraphicsView::drawItems() 或 QGraphicsScene::drawItems() 强制执行。此标志在 Qt 4.3 中引入。

QGraphicsItem.ItemClipsChildrenToShape

项目将其所有后代的绘制剪裁到其自身形状内。此项目的直接或间接子项不能绘制在此项目形状之外。默认情况下,此标志是禁用的;子项可以在任何地方绘制。此行为由 QGraphicsView::drawItems() 或 QGraphicsScene::drawItems() 强制执行。此标志在 Qt 4.3 中引入。

注意

此标志类似于 ItemContainsChildrenInShape,但还通过剪裁子项强制执行包含。

常数

描述

QGraphicsItem.ItemIgnoresTransformations

项目不会忽略继承的变换(即其位置仍然锚定到其父项,但父项或视图的旋转、缩放或剪切变换被忽略)。此标志对于保持文本标签项水平且未缩放很有用,因此它们在视图变换后仍然可读。设置时,项目视图几何形状和场景几何形状将被分别维护。您必须调用 deviceTransform() 来映射坐标和检测视图中的碰撞。默认情况下,此标志是禁用的。此标志在 Qt 4.3 中引入。

注意

设置此标志后,您仍然可以缩放项目本身,而这种缩放变换将影响项目的子项。

常数

描述

QGraphicsItem.ItemIgnoresParentOpacity

项目忽略其父项的不透明度。项目有效的透明度与其自身相同;它不与父项的透明度混合。此标志允许项目即使在父项半透明时也能保持其绝对透明度。此标志在 Qt 4.5 中引入。

QGraphicsItem.ItemDoesntPropagateOpacityToChildren

项目不会向其子项传播其不透明度。此标志允许您创建不会影响其子项透明度的半透明项目。此标志在 Qt 4.5 中引入。

QGraphicsItem.ItemStacksBehindParent

项目堆叠在其父项之后。默认情况下,子项是堆叠在父项之上的。但设置此标志后,子项将被堆叠在其下方。此标志对于创建跟随父项几何形状但不覆盖其上绘制的装饰对象(例如阴影效果)很有用。此标志在 Qt 4.5 中引入。

QGraphicsItem.ItemUsesExtendedStyleOption

该对象使用 exposedRect ,在 QStyleOptionGraphicsItem 中定义。默认情况下,exposedRect 被初始化为对象的边界矩形 boundingRect() 。您可以通过启用此标志来为样式选项设置更精细的值。如果您需要更高的值,请使用 levelOfDetailFromTransform() 方法。此标志自 Qt 4.6 开始引入。

QGraphicsItem.ItemHasNoContents

该对象不会进行任何绘制(即在对象上调用 paint() 方法没有任何效果)。对于不需要绘制的对象,您应设置此标志以确保图形视图避免不必要的绘制准备。此标志自 Qt 4.6 开始引入。

QGraphicsItem.ItemSendsGeometryChanges

该对象启用了针对 itemChange() 通知的 ItemPositionChangeItemPositionHasChangedItemTransformChangeItemTransformHasChangedItemRotationChangeItemRotationHasChangedItemScaleChangeItemScaleHasChangedItemTransformOriginPointChangeItemTransformOriginPointHasChanged 的通知。出于性能考虑,这些通知默认是禁用的。您必须启用此标志以接收位置和变换变化的通知。此标志自 Qt 4.6 开始引入。

QGraphicsItem.ItemAcceptsInputMethod

该对象支持通常用于亚洲语言的输入方法。此标志自 Qt 4.6 开始引入。

QGraphicsItem.ItemNegativeZStacksBehindParent

如果对象的 z 值为负,则它会自动堆叠在其父级后面。此标志启用 setZValue() 来切换 ItemStacksBehindParent。此标志自 Qt 4.6 开始引入。

QGraphicsItem.ItemIsPanel

这个项目是一个面板。面板提供激活和包含焦点处理。同一时间只能有一个面板处于激活状态(参见 isActive())。当没有激活的面板时,QGraphicsScene 将激活所有非面板项目。窗口项目(即,isWindow() 返回 true)是面板。这个标志首次在 Qt 4.6 中引入。

QGraphicsItem.ItemSendsScenePositionChanges

项目启用 itemChange() 通知,以 ItemScenePositionHasChanged 为例。出于性能考虑,这些通知默认是禁用的。您必须启用此标志才能接收场景位置变化的通知。此标志首次在 Qt 4.6 中引入。

QGraphicsItem.ItemContainsChildrenInShape

此标志表明项目的所有直接或间接子项仅在项目的形状内绘制。与 ItemClipsChildrenToShape 不同,这种限制不是强制性的。当您手动确保绘制受项目形状限制并且想要避免执行裁剪的成本时,请设置 ItemContainsChildrenInShape。设置此标志可以启用更有效的绘制和碰撞检测。此标志默认禁用。

注意

如果同时设置了此标志和 ItemClipsChildrenToShape,则将执行裁剪。这相当于仅设置 ItemClipsChildrenToShape。

此标志首次在 Qt 5.4 中引入。

GraphicsItemChange#

此枚举描述了 itemChange() 通知的状态变化。通知随状态变化发送,在某些情况下,可以进行调整(有关详细信息,请参见每个更改的文档)。

注意:在 QGraphicsItem 的内部调用函数时要小心,因为某些函数调用可能会导致不希望的递归。例如,在 ItemPositionChange 通知上,您不能在 itemChange() 上调用 setPos(),因为 setPos() 函数将再次调用 itemChange(ItemPositionChange)。相反,您可以从 itemChange() 返回新的、调整后的位置。

常数

描述

QGraphicsItem.ItemEnabledChange

项目的启用状态改变。如果项目当前处于启用状态,则将变为禁用状态,反之亦然。值参数是新启用状态(即 true 或 false)。不要在setEnabled() 中调用itemChange(),因为已经发出此通知。相反,您可以从itemChange() 返回新状态。

QGraphicsItem.ItemEnabledHasChanged

项目的启用状态已更改。值参数是新启用状态(即 true 或 false)。不要在itemChange() 中调用 setEnabled(),因为已经发出此通知。返回值将被忽略。

QGraphicsItem.ItemPositionChange

项目的位置改变。如果启用了 ItemSendsGeometryChanges 标志,则会发送此通知;当项目的局部位置相对于父对象改变时(即调用 setPos()moveBy() 的结果)。值参数是新的位置(即一个 QPointF)。您可以使用 pos() 获取原始位置。不要在itemChange() 中调用 setPos()moveBy(),因为已经发出此通知;相反,您可以从 itemChange() 返回新的、调整后的位置。在该通知之后,如果位置发生了变化,QGraphicsItem 将立即发送 ItemPositionHasChanged 通知。

QGraphicsItem.ItemPositionHasChanged

项目位置已改变。如果启用了 ItemSendsGeometryChanges 标志,并且项目相对于其父级的本地位置改变后,将发送此通知。值参数是新的位置(与 pos() 相同),并且 QGraphicsItem 忽略此通知的返回值(即,只读通知)。

QGraphicsItem.ItemTransformChange

项目变换矩阵改变。如果启用了 ItemSendsGeometryChanges 标志,并且当项目的本地变换矩阵改变时(即,通过调用 setTransform() 时),将发送此通知。值参数是新矩阵(即,QTransform);要获取旧矩阵,请调用 transform() 。不要在此通知传递时调用 setTransform() 或在 itemChange() 中设置变换属性,而是可以在 itemChange() 中返回新矩阵。如果不更改变换属性,则不会发送此通知。

QGraphicsItem.ItemTransformHasChanged

项目的变换矩阵已改变,原因是调用 setTransform 或更改变换属性之一。如果启用了 ItemSendsGeometryChanges 标志,并且在项目的本地变换矩阵改变后,将发送此通知。值参数是新矩阵(与 transform() 相同),并且 QGraphicsItem 忽略此通知的返回值(即,只读通知)。

QGraphicsItem.ItemRotationChange

项目的旋转属性发生变化。当启用ItemSendsGeometryChanges标记,并且当项目的旋转属性发生变化(例如,调用setRotation()时),将发送此通知。值参数是新旋转值(即一个双精度数);要获取旧旋转值,请调用rotation() 。请不要在itemChange() 中调用 setRotation(),因为此时通知已被发送;相反,您可以从 itemChange() 中返回新旋转值。

QGraphicsItem.ItemRotationHasChanged

项目的旋转属性已发生变化。如果启用ItemSendsGeometryChanges标记,并且当项目的旋转属性发生变化后,将发送此通知。值参数是新旋转值(即一个双精度数),QGraphicsItem 不忽略此通知的返回值(即只读通知)。不要在 itemChange() 中调用 setRotation(),因为此时通知已被发送。

QGraphicsItem.ItemScaleChange

项目的缩放属性发生变化。如果启用ItemSendsGeometryChanges标记,并且当项目的缩放属性发生变化(例如,调用setScale()时),将发送此通知。值参数是新缩放值(即一个双精度数);要获取旧缩放值,请调用scale() 。请不要在itemChange() 中调用 setScale(),因为此时通知已被发送;相反,您可以从 itemChange() 中返回新缩放值。

QGraphicsItem.ItemScaleHasChanged

项目的缩放属性已更改。如果启用了ItemSendsGeometryChanges 标志,并且当项目的缩放属性变更后,则发出此通知。值参数为新缩放值(即一个双精度浮点数),而QGraphicsItem 将忽略此通知的返回值(即只读通知)。不要在itemChange() 中调用 setScale(),因为在传递该通知时可能会调用。

QGraphicsItem.ItemTransformOriginPointChange

项目的变换原点属性已更改。如果启用了ItemSendsGeometryChanges 标志,并且当项目的变换原点属性更改(即调用 setTransformOriginPoint() 的结果)时,则发送此通知。值参数是新原点位置(即一个QPointF),要获取旧原点位置,请调用 transformOriginPoint()。不要在itemChange() 中调用 setTransformOriginPoint(),因为这个通知已被发送;相反,您可以从 itemChange() 返回新的变换原点。

QGraphicsItem.ItemTransformOriginPointHasChanged

项目的变换原点属性已更改。如果启用了ItemSendsGeometryChanges 标志,并且项目的变换原点属性变更后,则发出此通知。值参数是新原点位置(即一个QPointF),而QGraphicsItem 将忽略此通知的返回值(即只读通知)。不要在itemChange() 中调用 setTransformOriginPoint(),因为这个通知已被发送。

QGraphicsItem.ItemSelectedChange

项目的选中状态发生变化。如果项目目前处于选中状态,则变为未选中,反之亦然。值参数是新选中状态(即 true 或 false)。在此通知发送时,不要在 setSelected() 中调用,因为在 itemChange() 中调用更为合适;相反,您可以从 itemChange() 返回新的选中状态。

QGraphicsItem.ItemSelectedHasChanged

项目的选中状态已更改。值参数是新选中状态(即 true 或 false)。在此通知发送时,不要在 itemChange() 中调用 setSelected()。返回值将被忽略。

QGraphicsItem.ItemVisibleChange

项目的可见状态发生变化。如果项目目前是可见的,则变为不可见,反之亦然。值参数是新可见状态(即 true 或 false)。在此通知发送时,不要在 itemChange() 中调用 setVisible();相反,您可以从 itemChange() 返回新的可见状态。

QGraphicsItem.ItemVisibleHasChanged

项目的可见状态已更改。值参数是新可见状态(即 true 或 false)。在此通知发送时,不要在 itemChange() 中调用 setVisible()。返回值将被忽略。

QGraphicsItem.ItemParentChange

项目父级发生变化。值参数是新父级项目(即一个 QGraphicsItem 指针)。在此通知发送时,不要在 itemChange() 中调用 setParentItem();相反,您可以从 itemChange() 返回新的父级。

QGraphicsItem.ItemParentHasChanged

项目父项已更改。值参数是新的父项(即指向一个 QGraphicsItem 对象的指针)。不要在 setParentItem() 中调用 itemChange(),因为这个通知正在传递。返回值将被忽略。

QGraphicsItem.ItemChildAddedChange

将一个子项添加到此项目。值参数是新子项(即一个 QGraphicsItem 对象的指针)。不要将此项传递给任何项的 setParentItem() 函数,因为这个通知正在传递。返回值未使用;您不能在此通知中调整任何内容。请注意,当此通知发送时,新子项可能尚未完全构建;在子项上调用纯虚函数可能会导致崩溃。

QGraphicsItem.ItemChildRemovedChange

从此项目移除了一个子项。值参数是即将被移除的子项(即一个 QGraphicsItem 对象的指针)。返回值未使用;您不能在此通知中调整任何内容。

QGraphicsItem.ItemSceneChange

该项被移动到新的场景。当项被添加到其初始场景以及当项被移除时,也会发送此通知。项的 scene() 是旧场景,或者 None 如果项尚未添加到场景。值参数是新场景(即一个 QGraphicsScene 对象的指针),或者 None 如果项被从场景中移除。不要通过将此项传递给 addItem() 来覆盖此更改,因为此通知正在传递;相反,您可以从 itemChange() 中返回新场景。谨慎使用此功能;反对场景更改可能导致不希望的递归。

QGraphicsItem.ItemSceneHasChanged

物品的场景已改变。物品的 scene() 是新的场景。当物品被添加到其初始场景或被移除时,也会发送此通知。value 参数是新的场景(即指向一个 QGraphicsScene 的指针)。在 itemChange() 中不要调用 setScene(),因为此时将发送此通知。返回值将被忽略。

QGraphicsItem.ItemCursorChange

物品的光标已改变。value 参数是新的光标(即一个 QCursor)。在 itemChange() 中不要调用 setCursor(),因为此时将发送此通知。相反,您可以从 itemChange() 返回一个新的光标。

QGraphicsItem.ItemCursorHasChanged

物品的光标已改变。value 参数是新的光标(即一个 QCursor)。因为此时将发送此通知,所以请不要调用 setCursor()。返回值将被忽略。

QGraphicsItem.ItemToolTipChange

物品的工具提示已改变。value 参数是新工具提示(即一个 QToolTip)。在 itemChange() 中不要调用 setToolTip(),因为此时将发送此通知。相反,您可以从 itemChange() 返回一个新的工具提示。

QGraphicsItem.ItemToolTipHasChanged

物品的工具提示已改变。value 参数是新工具提示(即一个 QToolTip)。因为此时将发送此通知,所以请不要调用 setToolTip()。返回值将被忽略。

QGraphicsItem.ItemFlagsChange

物品的标志发生了变化。值参数是新标志(即 quint32)。在itemChange()中不要调用setFlags(),因为这个通知已经被发送。相反,您可以从itemChange()返回新的标志。

QGraphicsItem.ItemFlagsHaveChanged

物品的标志已发生变化。值参数是新标志(即 quint32)。请不要在itemChange()中调用setFlags(),因为这个通知已经传递。返回值被忽略。

QGraphicsItem.ItemZValueChange

物品的Z值发生了变化。值参数是新Z值(即 double)。在itemChange()中不要调用setZValue(),因为这个通知已经传递。您可以从itemChange()返回一个新的Z值。

QGraphicsItem.ItemZValueHasChanged

物品的Z值已发生改变。值参数是新Z值(即 double)。在此通知发送后不要调用setZValue()。返回值被忽略。

QGraphicsItem.ItemOpacityChange

物品的不透明度发生了变化。值参数是新不透明度(即 double)。在itemChange()中不要调用setOpacity(),因为这个通知已经发送。相反,您可以从itemChange()返回新的不透明度。

QGraphicsItem.ItemOpacityHasChanged

物品的不透明度已发生变化。值参数是新不透明度(即 double)。在此通知发送后不要调用setOpacity()。返回值被忽略。

QGraphicsItem.ItemScenePositionHasChanged

项目的场景位置已改变。如果启用了ItemSendsScenePositionChanges标志,并且项目的场景位置改变后(即项目本身或任何祖先的位置或转换已改变),则会发送此通知。值参数是新的场景位置(与scenePos()相同),并且QGraphicsItem忽略这个通知的返回值(即只读通知)。

class CacheMode#

此枚举描述了QGraphicsItem的缓存模式。缓存用于通过分配和渲染到离屏像素缓冲区来加快渲染速度,当项目需要重新绘制时可以重复使用。对于某些绘图设备,缓存直接存储在图形内存中,这使得渲染非常快速。

常数

描述

QGraphicsItem.NoCache

默认值;禁用所有项目缓存。《a class="reference internal" href="#PySide6.QtWidgets.QGraphicsItem.paint" title="PySide6.QtWidgets.QGraphicsItem.paint">paint()在项目需要重新绘制时每次都会被调用。

QGraphicsItem.ItemCoordinateCache

启用了项目的逻辑(本地)坐标系缓存。 QGraphicsItem使用可配置的大小/分辨率创建一个离屏像素缓冲区,可以传递给setCacheMode() 。根据缓存的分辨率和项目转换,渲染质量通常会降低。第一次重新绘制项目时,项目会将其绘制到缓存中,然后每次后续暴露时都会重复使用缓存。在项目转换时,缓存也会被重复使用。要调整缓存的分辨率,可以再次调用setCacheMode()

QGraphicsItem.DeviceCoordinateCache

在设备坐标系级别启用缓存。这种模式适用于可以移动但未被旋转、缩放或错切的项。如果项直接或间接地进行了转换,缓存将自动重新生成。与ItemCoordinateCacheMode不同,DeviceCoordinateCache始终以最大质量渲染。

另请参阅

setCacheMode()

class PanelModality#

此枚举指定了模态面板的行为。模态面板是一种阻止其他面板输入的面板。请注意,模态面板的子项不会受到阻止。

值包括

常数

描述

QGraphicsItem.NonModal

面板不是模态的,不会阻止其他面板的输入。这是面板的默认值。

QGraphicsItem.PanelModal

面板对一个项层次结构是模态的,并阻止其父窗格、所有祖父母面板以及其父窗格和祖父母面板的所有兄弟姐妹的输入。

QGraphicsItem.SceneModal

窗口对整个场景是模态的,并阻止所有面板的输入。

新自版本 4.6。

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

parentQGraphicsItem

使用给定的 parent 项构建一个 QGraphicsItem。它不会修改由 QObject::parent() 返回的父对象。

如果 parentNone,您可以通过调用 addItem() 将项添加到场景中。然后,项将成为顶级项。

另请参阅

addItem() setParentItem()

acceptDrops()#
返回类型:

布尔值

如果此项可以接收拖放事件,则返回 true;否则,返回 false。默认情况下,项不接受拖放事件;项对拖放事件不可见。

另请参阅

setAcceptDrops()

acceptHoverEvents()#
返回类型:

布尔值

如果项接受悬停事件(QGraphicsSceneHoverEvent),则返回 true;否则,返回 false。默认情况下,项不接受悬停事件。

acceptTouchEvents()#
返回类型:

布尔值

如果项目接受触摸事件,则返回 true;否则,返回 false。默认情况下,项目不接受触摸事件。

另请参阅

setAcceptTouchEvents()

acceptedMouseButtons()#
返回类型:

Qt的 MouseButton 组合

返回此项目接受鼠标事件所需的鼠标按钮。默认情况下,接受所有鼠标按钮。

如果项目接受鼠标按钮,当传递该鼠标按钮的鼠标按下事件时,它将成为鼠标捕获项目。然而,如果项目不接受该按钮,QGraphicsScene 将将鼠标事件转发到其下方的第一个接受鼠标事件的项目。

addToIndex()#
advance(phase)#
参数:

phase – int

此虚拟函数由 advance() 槽对所有项目调用两次。在第一个阶段,所有项目使用 phase=0 被调用,表示场景中的项目即将前进,然后所有项目使用 phase=1 被调用。如果需要简单的场景控制动画,请重新实现此功能以更新您的项目。

默认实现不执行任何操作。

此函数旨在用于动画。另一个选择是从 QObject 和 QGraphicsItem 多重继承,并使用动画框架。

另请参阅

advance() QTimeLine

abstract boundingRect()#
返回类型:

QRectF

警告

此部分包含从C++自动翻译为Python的片段,可能包含错误。

此纯虚拟函数将项目的外部边界定义为矩形;所有绘图都必须限制在项目边界矩形的内部。 QGraphicsView 使用此来决定项目是否需要重绘。

尽管项目可以是任意形状的,但边界矩形总是矩形的,而且不受项目变换的影响。

如果想要更改项的外接矩形,必须首先调用 prepareGeometryChange()。这将通知场景即将发生更改,以便它可以更新项的几何索引;否则,场景将不会知道项的新几何形状,结果不可定义(通常,渲染后的视图中会留下渲染痕迹)。

重新实现此函数以便 QGraphicsView 确定需要重新绘制的小部件部分,如果有的话。

注意:对于绘制轮廓/线条的形状,重要的是要将笔宽度的一半包含在外接矩形中。尽管如此,不必对抗锯齿进行补偿。

示例

def boundingRect(self):

    penWidth = 1
    return QRectF(-radius - penWidth / 2, -radius - penWidth / 2,
                  diameter + penWidth, diameter + penWidth)
boundingRegion(itemToDeviceTransform)#
参数:

itemToDeviceTransformQTransform

返回类型:

QRegion

返回此项的外接区域。返回区域的坐标空间取决于 itemToDeviceTransform。如果您传递一个恒等变换作为参数,则此函数将返回一个局部坐标区域。

外接区域描述了项的可视内容的大致轮廓。虽然计算成本较高,但它比 boundingRect() 更精确,并且可以帮助在项更新时避免不必要的重绘。这尤其适用于细长的项(例如线条或简单的多边形)。您可以通过调用 setBoundingRegionGranularity() 来调整外接区域的粒度。默认粒度为 0;该项的外接区域与其外接矩形相同。

itemToDeviceTransform 是从项坐标到设备坐标的变换。如果您想使此函数返回场景坐标中的 QRegion,可以将 sceneTransform() 作为参数传递。

boundingRegionGranularity()#
返回类型:

浮点

获取项目的边界区域粒度;一个介于包括0和1之间的值。默认值为0(即最低粒度,边界区域对应于项目的边界矩形)。

cacheMode()#
返回类型:

缓存模式

返回此项目的缓存模式。默认模式是NoCache(即禁用缓存,所有绘图都是即时的)。

另请参阅

setCacheMode()

childItems()#
返回类型:

列表 QGraphicsItem

返回此项的子项列表。

项目按堆叠顺序排序。这既考虑了项目的插入顺序,也考虑了它们的Z值。

另请参阅

setParentItem() zValue() 排序

childrenBoundingRect()#
返回类型:

QRectF

返回此项后代(即其子项、他们的子项等)的局部坐标中的边界矩形。矩形将包含在它们映射到局部坐标之后的所有后代。如果项目没有子项,此函数返回一个空的QRectF。

这不包括此项目的自己的边界矩形;它只返回其后代的累积边界矩形。如果您需要包括此项目的边界矩形,可以通过使用QRectF::operator|()将boundingRect()添加到childrenBoundingRect()中。

此函数的复杂度是线性的;它通过迭代所有后代来确定返回的边界矩形的尺寸。

clearFocus()#

从项目中获取键盘输入焦点。

如果有焦点,一个focusOutEvent被发送到该项目以通知它它即将失去焦点。

只有设置了ItemIsFocusable标志的项目,或者设置了适当的焦点策略的小部件,才能接受键盘焦点。

clipPath()#
返回类型:

QPainterPath

返回此项的剪切路径,如果没有剪切则返回空的QPainterPath。剪切路径限制项的显示和交互(即,限制项可以绘制区域和接收事件的范围)。

您可以通过设置ItemClipsToShapeItemClipsChildrenToShape标志来启用剪切。项的剪切路径是通过交集所有剪切父项的形状来计算的。如果设置了ItemClipsToShape,最终的剪切将与项自己的形状进行交集。

注意

剪切会对所有相关的项引入性能惩罚;如果可能的话,您通常应避免使用剪切(例如,如果您的事项总是绘制在boundingRect()shape()边界内,则剪切不是必需的)。

collidesWithItem(other[, mode=Qt.IntersectsItemShape])#
参数:
返回类型:

布尔值

如果此项与other发生碰撞,则返回true;否则返回false

mode 应用于 other,然后将生成的形状或边界矩形与此项目的形状进行比较。默认值是 Qt::IntersectsItemShape;如果 other 与此项目的形状相交、包含或被此项目的形状包含,则表示碰撞(有关详细信息,请参阅 Qt::ItemSelectionMode)。

默认实现基于形状交集,并在两个项目上调用 shape()。由于当形状复杂时,任意形状交集的复杂性会以一个数量级增长,因此此操作可能非常耗时。您可以选择在 QGraphicsItem 的子类中重新实现此函数,以提供自定义算法。这允许您利用自己项目的形状中的自然约束来提高碰撞检测的性能。例如,两个未变换的完美圆形项目之间的碰撞可以通过比较它们的位罝和半径来确定。

请注意,当重新实现此函数并调用 shape()boundingRect() 时,在发生任何交集之前,必须将返回的坐标映射到此项目的坐标系。

另请参阅

contains()shape()

collidesWithPath(path[, mode=Qt.IntersectsItemShape])#
参数:
返回类型:

布尔值

如果此项目与 path 碰撞,则返回 true

碰撞由 mode 确定。默认值是 Qt::IntersectsItemShape;如果 path 与此项目的形状相交、包含或被此项目的形状包含,则表示碰撞。

请注意,此函数检查项目形状或边界矩形(取决于 mode)是否在 path 内部,而不是检查 path 是否在项目形状或边界矩形内。

collidingItems([mode=Qt.IntersectsItemShape])#
参数:

modeItemSelectionMode

返回类型:

列表 QGraphicsItem

返回与此项发生碰撞的所有项的列表。

碰撞检测的方式由应用 mode 于与此项进行比较的项来决定,即检查每个项的形状或边界矩形,看是否与此项的形状相符。默认值对于 mode 是 Qt::IntersectsItemShape。

另请参阅

collidesWithItem()

commonAncestorItem(other)#
参数:

otherQGraphicsItem

返回类型:

QGraphicsItem

返回此项和 other 的最近共同祖先项,或者当 otherNone 或没有共同祖先时,返回 None

另请参阅

isAncestorOf()

contains(point)#
参数:

pointQPointF

返回类型:

布尔值

如果此项包含本地坐标中的 point,则返回 true;否则返回 false。该函数通常从 QGraphicsView 调用,以确定光标下的项是什么,因此此函数的实现应尽可能轻量。

默认情况下,此函数调用 shape(),但你可以在子类中重新实现它,以提供(可能更高效)的实现。

contextMenuEvent(event)#
参数:

eventQGraphicsSceneContextMenuEvent

警告

此部分包含从C++自动翻译为Python的片段,可能包含错误。

此事件处理器可以在子类中重写,以处理上下文菜单事件。参数 event 包含要处理的事件的详细信息。

如果您忽略事件(例如,通过调用 QEvent::ignore()),则 event 将传播到此项目下任何项目。如果没有项目接受此事件,它将被场景忽略并传播到视图。

在接收到上下文菜单事件时打开一个 QMenu 是常见的操作。例如

def contextMenuEvent(self, event):

    menu = QMenu()
    removeAction = menu.addAction("Remove")
    markAction = menu.addAction("Mark")
    selectedAction = menu.exec(event.screenPos())
    # ...

默认实现在这里是忽略事件。

另请参阅

sceneEvent()

cursor()#
返回类型:

QCursor

警告

此部分包含从C++自动翻译为Python的片段,可能包含错误。

返回此项目的当前光标形状。鼠标光标在此项目上时将假设此形状。请参阅预定义光标对象列表,以了解各种有用形状。

编辑项目可能希望使用 I-beam 光标

item.setCursor(Qt.IBeamCursor)

如果没有设置光标,将使用此项目下项目的光标。

data(key)#
参数:

key – int

返回类型:

对象

警告

此部分包含从C++自动翻译为Python的片段,可能包含错误。

以 QVariant 形式返回此项目对键 key 的自定义数据。

自定义项目数据对于在任何项目中存储任意属性非常有用。例如

ObjectName = 0
item = scene.itemAt(100, 50)
if item.data(ObjectName).toString().isEmpty():
    if ButtonItem(item):
        item.setData(ObjectName, "Button")

Qt 不使用此功能存储数据;它仅提供供用户方便使用。

另请参阅

setData()

deviceTransform(viewportTransform)#
参数:

viewportTransformQTransform

返回类型:

QTransform

警告

此部分包含从C++自动翻译为Python的片段,可能包含错误。

返回此项目的设备变换矩阵,使用 viewportTransform 从场景坐标映射到设备坐标。此矩阵可用于将坐标和几何形状从此项目的本地坐标系映射到视口(或任何设备)的坐标系。要从视口映射坐标,您必须首先反转返回的矩阵。

示例

rect = QGraphicsRectItem()
rect.setPos(100, 100)
rect.deviceTransform(view.viewportTransform()).map(QPointF(0, 0))
# returns the item's (0, 0) point in view's viewport coordinates
rect.deviceTransform(view.viewportTransform()).inverted().map(QPointF(100, 100))
# returns view's viewport's (100, 100) coordinate in item coordinates

此函数与将此项目的场景变换与视口的视口变换组合相同,但它还理解 ItemIgnoresTransformations 标志。设备变换可用于对不可变换的项目进行精确坐标映射(和碰撞检测)。

dragEnterEvent(event)#
参数:

eventQGraphicsSceneDragDropEvent

警告

此部分包含从C++自动翻译为Python的片段,可能包含错误。

该事件处理器可以重新实现以接收对此项的拖入事件。当光标进入项目区域时生成拖入事件。

通过接受事件(即,通过调用QEvent::accept()),项目除了接收拖动移动和拖动离开事件外,还将接受放置事件。否则,事件将被忽略,并传播到下方的项目。如果事件被接受,项目将在控制返回事件循环之前收到拖动移动事件。

拖动进入事件的常见实现取决于事件event中关联的mime数据来接受或忽略event。示例

def __init__(self):

    setAcceptDrops(True)
    ...

def dragEnterEvent(self, event):

    event.setAccepted(event.mimeData().hasFormat("text/plain"))

项目默认不接收拖放事件;要启用此功能,请调用setAcceptDrops(true)

默认实现不执行任何操作。

dragLeaveEvent(event)#
参数:

eventQGraphicsSceneDragDropEvent

该事件处理器可以重新实现以接收对此项的拖动离开事件。当光标离开项目区域时生成拖动离开事件。您通常不需要重新实现此函数,但此函数可以用于在项目中重置状态(例如,突出显示)。

event上调用QEvent::ignore()或QEvent::accept()没有影响。

项目默认不接收拖放事件;要启用此功能,请调用setAcceptDrops(true)

默认实现不执行任何操作。

dragMoveEvent(event)#
参数:

eventQGraphicsSceneDragDropEvent

此事件处理器用于处理事件 event,可以重新实现以接收此项目的拖动移动事件。拖动移动事件会在光标在此项目区域内部移动时生成。通常您不需要重新实现此功能;它用于指示只有项目的部分可以接收拖放。

event 上调用 QEvent::ignore() 或 QEvent::accept() 可以切换是否在此事件的指定位置接受拖放。默认情况下,event 是接受的,表示项目允许在指定位置进行拖放。

项目默认不接收拖放事件;要启用此功能,请调用setAcceptDrops(true)

默认实现不执行任何操作。

dropEvent(event)#
参数:

eventQGraphicsSceneDragDropEvent

此事件处理器用于处理事件 event,可以重新实现以接收此项目的拖放事件。只有当最后的拖动移动事件被接受时,项目才能接收拖放事件。

event上调用QEvent::ignore()或QEvent::accept()没有影响。

项目默认不接收拖放事件;要启用此功能,请调用setAcceptDrops(true)

默认实现不执行任何操作。

effectiveOpacity()#
返回类型:

浮点

返回此项目的 有效 透明度,范围在 0.0(透明)到 1.0(不透明)之间。此值是此项目本地透明度及其父项和祖先项透明度的组合。有效透明度决定了内容如何渲染。

ensureVisible(x, y, w, h[, xmargin=50[, ymargin=50]])#
参数:
  • x – float

  • y – float

  • 宽(w) – float

  • 高(h) – float

  • 横向边距(xmargin) – int

  • 纵向边距(ymargin) – int

此便捷函数等价于调用 ensureVisible (QRectF(x, y, w, h), xmargin, ymargin)。

ensureVisible([rect=QRectF()[, xmargin=50[, ymargin=50]]])
参数:
  • 矩形(rect)QRectF

  • 横向边距(xmargin) – int

  • 纵向边距(ymargin) – int

如果此项目是视图 QGraphicsView 所查看的场景的一部分,则此便捷函数将尝试滚动视图以确保 rect 在视图的视口中可见。如果 rect 是空矩形(默认),则 QGraphicsItem 将默认为项目的外部矩形。横向边距和纵向边距是视图应使用的边缘像素数。

如果指定的矩形无法到达,则内容将滚动到最近的合法位置。

如果此项目不是由 QGraphicsView 查看,则此函数不执行任何操作。

另请参阅

ensureVisible()

extension(variant)#
参数:

变量(variant) – 对象

返回类型:

对象

filtersChildEvents()#
返回类型:

布尔值

如果此项目筛选子事件(即,将所有针对其子项的事件发送到此项目),则返回 true;否则返回 false

默认值为 false;不筛选子事件。

flags()#
返回类型:

组合了GraphicsItemFlag

返回此项目的标志。标志描述了项目的哪些可配置特性已被启用或禁用。例如,如果标志包括ItemIsFocusable,则该项目可以接受输入焦点。

默认情况下,没有任何标志被启用。

另请参阅

setFlags() setFlag()

focusInEvent(event)#
参数:

eventQFocusEvent

此事件处理器,用于event事件,可以被重新实现以接收此项目的焦点获取事件。默认实现调用ensureVisible()

focusItem()#
返回类型:

QGraphicsItem

如果此项目、该项目的一个子项或后代当前有输入焦点,此函数将返回对该项目的指针。如果没有后代有输入焦点,则返回None

focusOutEvent(event)#
参数:

eventQFocusEvent

此事件处理器,用于event事件,可以被重新实现以接收此项目的焦点丢失事件。默认实现不做任何事情。

focusProxy()#
返回类型:

QGraphicsItem

返回此项目的焦点代理,如果没有焦点代理则返回None

focusScopeItem()#
返回类型:

QGraphicsItem

grabKeyboard()#

捕获键盘输入。

当任何以下事件发生之前,该项目将接收场景中所有的键盘输入:

  • 该项变为不可见

  • 项目从场景中删除

  • 项目被删除

  • 项目调用 ungrabKeyboard()

  • 另一个项目调用 grabKeyboard();当另一个项目调用 ungrabKeyboard() 时,项目将恢复键盘捕获。

当项获得键盘捕获时,它接收 QEvent::GrabKeyboard 事件。当它失去键盘捕获时,它接收 QEvent::UngrabKeyboard 事件。这些事件可以用来检测您的项是通过其他方式而不是获得输入焦点而获得或失去键盘捕获。

在 Qt 中几乎从不必要显式地捕获键盘,因为 Qt 以有意义的方式捕获和释放它。特别是,当您的项获得输入焦点时,Qt 捕获键盘;当您的项失去输入焦点或隐藏时,Qt 释放键盘。

注意,只有可见的项可以捕获键盘输入。对不可见项调用 grabKeyboard() 无效。

键盘事件不受影响。

grabMouse()#

捕获鼠标输入。

直到以下事件之一发生,该项目将接收场景中所有的鼠标事件

  • 该项变为不可见

  • 项目从场景中删除

  • 项目被删除

  • 项目调用 ungrabMouse()

  • 另一个项目调用 grabMouse();当另一个项目调用 ungrabMouse() 时,项将恢复鼠标捕获。

当项获得鼠标捕获时,它接收到一个 QEvent::GrabMouse 事件。当它失去鼠标捕获时,它接收一个 QEvent::UngrabMouse 事件。这些事件可以用来检测您的项是通过其他方式而不是接收鼠标按钮事件获得或失去鼠标捕获。

在Qt中几乎从不需要显式地捕获鼠标,因为Qt会理智地捕获和释放它。特别是,当按下鼠标按钮时,Qt会捕获鼠标,并且在释放最后一个鼠标按钮之前保持鼠标被捕获。此外,Qt::Popup小部件在显示时隐式调用grabMouse(),在隐藏时调用ungrabMouse()。

请注意,只有可见的项才能捕获鼠标输入。对不可见项调用grabMouse()没有任何效果。

键盘事件不受影响。

graphicsEffect()#
返回类型:

QGraphicsEffect

如果此项具有效果,则返回指向该效果的指针;否则返回None。

另请参阅

setGraphicsEffect()

group()#
返回类型:

QGraphicsItemGroup

返回指向此项所属组的指针,如果此项不是组的成员,则返回None。

handlesChildEvents()#
返回类型:

布尔值

如果此项处理子事件(即,所有针对其子项的事件都被发送到此项),则返回True;否则返回False。

此属性对于项组很有用;它允许一个项代表其子项处理事件,而不是其子项单独处理它们的事件。

默认情况下返回False;子项处理他们自己的事件。对此的例外是,如果项是QGraphicsItemGroup,则默认返回True。

hasCursor()#
返回类型:

布尔值

如果此项设置了光标,则返回True;否则返回False。

默认情况下,项没有设置任何光标。《cursor()`将会返回一个标准指向箭头光标。

另请参阅

unsetCursor()

hasFocus()#
返回类型:

布尔值

如果该项目处于活动状态,并且它或其focusProxy具有键盘输入焦点,则返回true;否则,返回false

hide()

隐藏项目(项目默认是可见的)。

此便捷函数等同于调用setVisible(false)

另请参阅

show() setVisible()

hoverEnterEvent(event)
参数:

eventQGraphicsSceneHoverEvent

此事件处理程序,用于处理事件event,可以重写以接收此项目的鼠标悬停进入事件。默认实现调用update();否则不执行任何操作。

event上调用QEvent::ignore()或QEvent::accept()没有影响。

hoverLeaveEvent(event)
参数:

eventQGraphicsSceneHoverEvent

此事件处理程序,用于处理事件event,可以重写以接收此项目的鼠标悬停离开事件。默认实现调用update();否则不执行任何操作。

event上调用QEvent::ignore()或QEvent::accept()没有影响。

hoverMoveEvent(event)#
参数:

eventQGraphicsSceneHoverEvent

此事件处理器,用于处理事件 event,可以重新实现以接收此项目的悬停移动事件。默认实现不执行任何操作。

event上调用QEvent::ignore()或QEvent::accept()没有影响。

inputMethodEvent(event)#
参数:

eventQInputMethodEvent

此事件处理器,用于处理事件 event,可以重新实现以接收此项目的输入法事件。默认实现忽略该事件。

inputMethodHints()#
返回类型:

输入法提示的InputMethodHint组合

返回此项目的当前输入法提示。

输入法提示仅与输入项目相关。提示由输入法用于指示其操作方式。例如,如果设置了Qt::ImhNumbersOnly标志,输入法可能会更改其视觉组件以反映只能输入数字。

效果可能因输入法实现而异。

inputMethodQuery(query)#
参数:

queryInputMethodQuery

返回类型:

对象

此方法只与输入对象相关。输入法可以使用它查询对象的属性,以便支持复杂的输入法操作,如对周围文本的支持和再次转换。《code class="docutils literal notranslate">query`指定了查询哪个属性。

installSceneEventFilter(filterItem)#
参数:

filterItemQGraphicsItem

警告

此部分包含从C++自动翻译为Python的片段,可能包含错误。

filterItem上为该对象安装一个事件过滤器,使得所有事件在到达该对象之前,都会先通过filterItemsceneEventFilter函数。

要过滤其他对象的事件,可以将此对象作为事件过滤器安装在另一个对象上。示例

scene = QGraphicsScene()
ellipse = scene.addEllipse(QRectF(-10, -10, 20, 20))
line = scene.addLine(QLineF(-10, -10, 20, 20))
line.installSceneEventFilter(ellipse)
# line's events are filtered by ellipse's sceneEventFilter() function.
ellipse.installSceneEventFilter(line)
# ellipse's events are filtered by line's sceneEventFilter() function.

一个对象只能过滤同一场景中其他对象的事件。此外,一个对象不能过滤它自己的事件;相反,你可以直接重写sceneEvent

场景事件过滤器必须安装和用于对象属于的场景。

isActive()#
返回类型:

布尔值

如果此对象是激活的,则返回true;否则返回false

一个对象只能在场景激活的情况下才是激活的。如果一个对象是,或是一个激活面板的后代,则该对象是激活的。非激活面板中的对象不是激活的。

当场景没有激活面板时,非面板对象会跟随场景激活。

只有激活的对象才能获得输入焦点。

isAncestorOf(child)#
参数:

childQGraphicsItem

返回类型:

布尔值

返回 true 如果此项是 child 的祖先(即,如果此项是 child 的父项,或者是 child 父项的祖先之一)。

另请参阅

parentItem()

isBlockedByModalPanel()#
返回类型:

(retval, blockingPanel)

如果此项被模态面板阻塞,则返回 true,否则为 false。如果 blockingPanel 不为零,则 blockingPanel 将被设置为此项阻塞的模态面板。如果此项没有被阻塞,则此函数不会设置 blockingPanel

此函数对于不在场景中的项始终返回 false

isClipped()#
返回类型:

布尔值

如果此项被裁剪,则返回 true。一项被裁剪是因为它已设置了 ItemClipsToShape 标志,或者它或其任何祖先已设置了 ItemClipsChildrenToShape 标志。

裁剪会影响项的外观(即绘制),以及鼠标和悬停事件的传递。

isEnabled()#
返回类型:

布尔值

如果项目已启用,则返回 true;否则返回 false。

另请参阅

setEnabled()

isObscured([rect=QRectF()])#
参数:

矩形(rect)QRectF

返回类型:

布尔值

这是一个重载的函数。

如果 rect 被上方的任何具有较高 Z 值的项目的非透明形状完全遮挡(即,由具有较高 Z 值的项目),则返回 true

另请参阅

opaqueArea()

isObscured(x, y, w, h)
参数:
  • x – float

  • y – float

  • 宽(w) – float

  • 高(h) – float

返回类型:

布尔值

这是一个重载的函数。

此便捷函数等价于调用 isObscured (QRectF(x, y, w, h))。

isObscuredBy(item)#
参数:

itemQGraphicsItem

返回类型:

布尔值

如果此项目的边界矩形被 item 的非透明形状完全遮挡,则返回 true

基本实现将 item's opaqueArea() 映射到此项目的坐标系统,然后检查此项目的 boundingRect() 是否完全包含在映射形状中。

您可以重写此函数来提供自定义算法,以确定此项目是否被 item 遮挡。

另请参阅

opaqueArea() isObscured()

isPanel()#
返回类型:

布尔值

如果项目是面板,则返回 true;否则返回 false

另请参阅

panel() ItemIsPanel

isSelected()#
返回类型:

布尔值

如果此项目被选中,则返回 true;否则返回 false。

在组中的项目继承组的选中状态。

项目默认情况下不选中。

isUnderMouse()#
返回类型:

布尔值

如果该项目当前位于视图中的一个鼠标光标下,则返回 true;否则返回 false。

另请参阅

views() pos()

isVisible()#
返回类型:

布尔值

如果项目可见,则返回 true;否则返回 false。

注意,项目的一般可见性与它是否被 QGraphicsView 实际可视化无关。

另请参阅

setVisible()

isVisibleTo(parent)#
参数:

parentQGraphicsItem

返回类型:

布尔值

如果项目对 parent 可见,则返回 true;否则返回 false。如果 parentNone,则此函数将返回项目是否对场景可见。

即使 isVisible() 为 true,项目也可能对其祖先不可见。即使 isVisible() 为 false,项目也可能对其祖先可见。如果有任何祖先被隐藏,项目本身将被隐式隐藏,在这种情况下,此函数将返回 false。

另请参阅

isVisible() setVisible()

isWidget()#
返回类型:

布尔值

如果此项目是一个小部件(即 QGraphicsWidget ),则返回 true;否则返回 false

isWindow()#
返回类型:

布尔值

如果项目是QGraphicsWidget窗口,则返回true,否则返回false。

另请参阅

窗口标志函数

itemChange(change, value)#
参数:
返回类型:

对象

警告

此部分包含从C++自动翻译为Python的片段,可能包含错误。

这是由QGraphicsItem调用的虚函数,用于通知自定义项某些项目状态的改变。通过重新实现此函数,您可以对更改做出反应,并且在某些情况下(取决于change),可以进行调整。

change是改变的项目参数。 value是新的值;值的类型取决于change

示例

def itemChange(self, GraphicsItemChange change, QVariant value):

    if change == ItemPositionChange and scene():
        # value is the new position.
        newPos = value.toPointF()
        rect = scene().sceneRect()
        if not rect.contains(newPos):
            # Keep the item inside the scene rect.
            newPos.setX(qMin(rect.right(), qMax(newPos.x(), rect.left())))
            newPos.setY(qMin(rect.bottom(), qMax(newPos.y(), rect.top())))
            return newPos


    return QGraphicsItem.itemChange(change, value)

默认实现不执行任何操作,并返回value

注意:在重新实现此函数时,不能调用某些QGraphicsItem函数;请参阅GraphicsItemChange文档以获取详细信息。

另请参阅

GraphicsItemChange

itemTransform(other)#
参数:

otherQGraphicsItem

返回类型:

(QTransform, bool ok)

返回一个将坐标从当前项映射到other的QTransform。如果ok不为null,并且如果没有这样的转换,则通过ok指向的布尔值设置为false;否则设置为true。

此转换提供了一种替代mapToItem()mapFromItem()函数的方法,通过返回适当的转换,您可以直接映射形状和坐标。它还有助于您在重复地在两个相同的项之间映射时编写更高效的代码。

注意

在极少数情况下,没有两种项之间的映射转换。

keyPressEvent(event)#
参数:

eventQKeyEvent

此事件处理程序用于事件 event,可以重写以接收本项的按键事件。默认实现会忽略事件。如果您重写了此处理程序,则事件默认会被接受。

请注意,只有设置了 ItemIsFocusable 标志并且具有键盘输入焦点的项目才能接收按键事件。

keyReleaseEvent(event)#
参数:

eventQKeyEvent

此事件处理程序用于事件 event,可以重写以接收本项的按键释放事件。默认实现会忽略事件。如果您重写了此处理程序,则事件默认会被接受。

请注意,只有设置了 ItemIsFocusable 标志并且具有键盘输入焦点的项目才能接收按键事件。

mapFromItem(item, x, y, w, h)#
参数:
  • itemQGraphicsItem

  • x – float

  • y – float

  • 宽(w) – float

  • 高(h) – float

返回类型:

QPolygonF

此便利函数相当于调用 mapFromItem (item, QRectF(x, y, w, h))。

mapFromItem(item, x, y)
参数:
返回类型:

QPointF

这是一个重载的函数。

此便捷函数等价于调用 mapFromItem (item, QPointF(x, y))。

mapFromItem(item, rect)
参数:
返回类型:

QPolygonF

将坐标系统在 item 中的矩形 rect 映射到该元素的坐标系统,并作为多边形返回映射后的矩形。

如果 itemNone,此函数返回与 mapFromScene() 相同的结果。

mapFromItem(item, point)
参数:
返回类型:

QPointF

将坐标系统在 item 中的点 point 映射到该元素的坐标系统,并返回映射后的坐标。

如果 itemNone,此函数返回与 mapFromScene() 相同的结果。

mapFromItem(item, path)
参数:
返回类型:

QPainterPath

将路径 path(位于 item 的坐标系中)映射到本项的坐标系中,并返回映射后的路径。

如果 itemNone,此函数返回与 mapFromScene() 相同的结果。

mapFromItem(item, polygon)
参数:
返回类型:

QPolygonF

将多边形 polygon(位于 item 的坐标系中)映射到本项的坐标系中,并返回映射后的多边形。

如果 itemNone,此函数返回与 mapFromScene() 相同的结果。

mapFromParent(path)#
参数:

pathQPainterPath

返回类型:

QPainterPath

将路径 path(位于本项父项的坐标系中)映射到本项的坐标系中,并返回映射后的路径。

mapFromParent(point)
参数:

pointQPointF

返回类型:

QPointF

将点 point(位于本项父项的坐标系中)映射到本项的坐标系中,并返回映射后的坐标。

mapFromParent(polygon)
参数:

多边形 - QPolygonF

返回类型:

QPolygonF

将此项目父坐标系统中的多边形 polygon 映射到该项目的坐标系统,并返回映射后的多边形。

mapFromParent(rect)
参数:

矩形(rect)QRectF

返回类型:

QPolygonF

将此项目父坐标系统中的矩形 rect 映射到该项目的坐标系统,并以多边形形式返回映射后的矩形。

mapFromParent(x, y)
参数:
  • x – float

  • y – float

返回类型:

QPointF

这是一个重载的函数。

此便捷函数等价于调用 mapFromParent (QPointF(x, y))。

mapFromParent(x, y, w, h)
参数:
  • x – float

  • y – float

  • 宽(w) – float

  • 高(h) – float

返回类型:

QPolygonF

此便捷函数等价于调用 mapFromItem (QRectF(x, y, w, h))。

mapFromScene(x, y)#
参数:
  • x – float

  • y – float

返回类型:

QPointF

这是一个重载的函数。

此便捷函数等价于调用 mapFromScene (QPointF(x, y))。

mapFromScene(x, y, w, h)
参数:
  • x – float

  • y – float

  • 宽(w) – float

  • 高(h) – float

返回类型:

QPolygonF

此便捷函数等价于调用 mapFromScene (QRectF(x, y, w, h))。

mapFromScene(rect)
参数:

矩形(rect)QRectF

返回类型:

QPolygonF

将矩形 rect(位于该项场景坐标系中)映射到该项的坐标系中,并返回作为多边形的映射矩形。

mapFromScene(polygon)
参数:

多边形 - QPolygonF

返回类型:

QPolygonF

将多边形 polygon(位于该项场景坐标系中)映射到该项的坐标系中,并返回映射后的多边形。

mapFromScene(point)
参数:

pointQPointF

返回类型:

QPointF

将点 point(位于该项场景坐标系中)映射到该项的坐标系中,并返回映射的坐标。

mapFromScene(path)
参数:

pathQPainterPath

返回类型:

QPainterPath

将路径 path(位于该项场景坐标系中)映射到该项的坐标系中,并返回映射后的路径。

mapRectFromItem(item, rect)#
参数:
返回类型:

QRectF

将位于 item 坐标系中的矩形 rect 映射到本项的坐标系,并返回映射后的新矩形(即所得多边形的边界矩形)。

如果 itemNone,则此函数将返回与 mapRectFromScene() 相同的结果。

mapRectFromItem(item, x, y, w, h)
参数:
  • itemQGraphicsItem

  • x – float

  • y – float

  • 宽(w) – float

  • 高(h) – float

返回类型:

QRectF

此便利函数等同于调用 mapRectFromItem (item, QRectF(x, y, w, h))。

mapRectFromParent(rect)#
参数:

矩形(rect)QRectF

返回类型:

QRectF

将位于此项父项坐标系中的矩形 rect 映射到本项的坐标系,并返回映射后的新矩形(即所得多边形的边界矩形)。

mapRectFromParent(x, y, w, h)
参数:
  • x – float

  • y – float

  • 宽(w) – float

  • 高(h) – float

返回类型:

QRectF

此便捷函数等价于调用 mapRectFromParent (QRectF(x, y, w, h))。

mapRectFromScene(rect)#
参数:

矩形(rect)QRectF

返回类型:

QRectF

将场景坐标系中的矩形 rect 映射到该项的坐标系中,并将映射后的矩形作为新矩形返回(即生成的多边形的边界矩形)。

mapRectFromScene(x, y, w, h)
参数:
  • x – float

  • y – float

  • 宽(w) – float

  • 高(h) – float

返回类型:

QRectF

此便捷函数等价于调用 mapRectFromScene (QRectF(x, y, w, h))。

mapRectToItem(item, rect)#
参数:
返回类型:

QRectF

将此项坐标系中的矩形 rect 映射到 item 的坐标系中,并将映射后的矩形作为新矩形返回(即生成多边形的边界矩形)。

如果 itemNone,则此函数返回的结果与 mapRectToScene() 相同。

mapRectToItem(item, x, y, w, h)
参数:
  • itemQGraphicsItem

  • x – float

  • y – float

  • 宽(w) – float

  • 高(h) – float

返回类型:

QRectF

此便捷函数等价于调用 mapRectToItem (item, QRectF(x, y, w, h))。

mapRectToParent(rect)#
参数:

矩形(rect)QRectF

返回类型:

QRectF

将此项坐标系中的矩形 rect 映射到其父项的坐标系中,并将映射后的矩形作为新矩形返回(即生成多边形的边界矩形)。

mapRectToParent(x, y, w, h)
参数:
  • x – float

  • y – float

  • 宽(w) – float

  • 高(h) – float

返回类型:

QRectF

此便捷函数相当于调用mapRectToParent (QRectF(x, y, w, h)).

mapRectToScene(x, y, w, h)
参数:
  • x – float

  • y – float

  • 宽(w) – float

  • 高(h) – float

返回类型:

QRectF

此便捷函数相当于调用mapRectToScene (QRectF(x, y, w, h)).

mapRectToScene(rect)
参数:

矩形(rect)QRectF

返回类型:

QRectF

将矩形rect(位于此项的坐标系中)映射到场景坐标系,并返回映射后的新矩形(即结果的边界矩形)。

mapToItem(item, path)
参数:
返回类型:

QPainterPath

将路径path(位于此项的坐标系中)映射到item的坐标系,并返回映射后的路径。

如果itemNone,则此函数的返回值与mapToScene()相同。

mapToItem(item, x, y, w, h)
参数:
  • itemQGraphicsItem

  • x – float

  • y – float

  • 宽(w) – float

  • 高(h) – float

返回类型:

QPolygonF

此便捷函数相当于调用mapToItem (item, QRectF(x, y, w, h)).

mapToItem(item, x, y)
参数:
返回类型:

QPointF

这是一个重载的函数。

此便捷函数等同于调用 mapToItem (item, QPointF(x, y)).

mapToItem(item, polygon)
参数:
返回类型:

QPolygonF

将坐标系统在此项中的多边形 polygon 映射到 item 的坐标系统,并返回映射后的多边形。

如果itemNone,则此函数的返回值与mapToScene()相同。

mapToItem(item, rect)
参数:
返回类型:

QPolygonF

将坐标系统在此项中的矩形 rect 映射到 item 的坐标系统,并返回作为多边形的映射矩形。

如果itemNone,则此函数的返回值与mapToScene()相同。

mapToItem(item, point)
参数:
返回类型:

QPointF

将坐标系统在此项中的点 point 映射到 item 的坐标系统,并返回映射后的坐标。

如果itemNone,则此函数的返回值与mapToScene()相同。

mapToParent(path)#
参数:

pathQPainterPath

返回类型:

QPainterPath

将坐标系统在此项中的路径 path 映射到其父项的坐标系统,并返回映射后的路径。如果项没有父项,则 path 将映射到场景的坐标系统。

mapToParent(point)
参数:

pointQPointF

返回类型:

QPointF

将此项目的坐标系中的点 point 映射到父坐标系统中,并返回映射后的坐标。如果该项目没有父级,则 point 将映射到场景坐标系。

mapToParent(polygon)
参数:

多边形 - QPolygonF

返回类型:

QPolygonF

将此项目坐标系中的多边形 polygon 映射到父坐标系统中,并返回映射后的多边形。如果该项目没有父级,则 polygon 将映射到场景坐标系。

mapToParent(rect)
参数:

矩形(rect)QRectF

返回类型:

QPolygonF

将此项目坐标系中的矩形 rect 映射到父坐标系统中,并返回映射后的矩形作为多边形。如果该项目没有父级,则 rect 将映射到场景坐标系。

mapToParent(x, y)
参数:
  • x – float

  • y – float

返回类型:

QPointF

这是一个重载的函数。

此便捷函数等价于调用 mapToParent (QPointF(x, y))。

mapToParent(x, y, w, h)
参数:
  • x – float

  • y – float

  • 宽(w) – float

  • 高(h) – float

返回类型:

QPolygonF

此便捷函数等价于调用 mapToParent (QRectF(x, y, w, h))。

mapToScene(x, y)#
参数:
  • x – float

  • y – float

返回类型:

QPointF

这是一个重载的函数。

此便捷函数等价于调用 mapToScene (QPointF(x, y))。

mapToScene(x, y, w, h)
参数:
  • x – float

  • y – float

  • 宽(w) – float

  • 高(h) – float

返回类型:

QPolygonF

此便捷函数相当于调用mapToScene (QRectF(x, y, w, h)).

mapToScene(rect)
参数:

矩形(rect)QRectF

返回类型:

QPolygonF

将在此项坐标系统中定义的矩形rect映射到场景坐标系统,并以多边形的形式返回映射矩形。

mapToScene(polygon)
参数:

多边形 - QPolygonF

返回类型:

QPolygonF

将在此项坐标系统中定义的多边形polygon映射到场景坐标系统,并返回映射的多边形。

mapToScene(point)
参数:

pointQPointF

返回类型:

QPointF

将在此项坐标系统中定义的点point映射到场景坐标系统,并返回映射的坐标。

mapToScene(path)
参数:

pathQPainterPath

返回类型:

QPainterPath

将在此项坐标系统中定义的路径path映射到场景坐标系统,并返回映射的路径。

mouseDoubleClickEvent(event)#
参数:

eventQGraphicsSceneMouseEvent

此事件处理器可以重写以接收此对象的鼠标双击事件。

双击一个项目时,该项目会首先接收到一个鼠标按下事件,然后是释放事件(即单击),接着是双击事件,最后是释放事件。

event上调用QEvent::ignore()或QEvent::accept()没有影响。

默认实现调用 mousePressEvent() 。如果您在重新实现此功能时要保留基本实现,请在您的重新实现中调用 QGraphicsItem::mouseDoubleClickEvent() 。

请注意,如果一个项目既不是 selectable 也不是 movable (在这种情况下,忽略单次鼠标点击,并且这会阻止产生双击事件)。

mouseMoveEvent(event)#
参数:

eventQGraphicsSceneMouseEvent

此事件处理器用于处理 event 事件,可以被重新实现来接收此项目的鼠标移动事件。如果您接到此事件,可以确定该项目也接收到鼠标按下事件,并且该项目是当前鼠标捕获者。

event上调用QEvent::ignore()或QEvent::accept()没有影响。

默认实现处理基本的项目交互,如选择和移动。如果您在重新实现此功能时要保留基本实现,请在您的重新实现中调用 QGraphicsItem::mouseMoveEvent() 。

请注意,mousePressEvent() 决定哪个图形项接收鼠标事件。详见 mousePressEvent() 的描述。

mousePressEvent(event)#
参数:

eventQGraphicsSceneMouseEvent

此事件处理程序用于事件 event,可以重新实现以接收此项目的鼠标按下事件。鼠标按下事件仅发送到按下鼠标按钮的项目。默认情况下,项目接受所有鼠标按钮,但您可以通过调用 setAcceptedMouseButtons() 来更改此设置。

鼠标按下事件决定哪个项目应该成为鼠标抓取器(请参阅 mouseGrabberItem())。如果您不重新实现此函数,则按下事件将传播到该项目的任何最顶层子项,并且不会将其他鼠标事件发送到该项目。

如果您重新实现了此函数,event 默认将被接受(请参阅 QEvent::accept()),然后此项目将成为鼠标抓取器。这允许项目接收未来的移动、释放和双击事件。如果在 event 上调用 QEvent::ignore(),则此项目将失去鼠标抓取,并且 event 将传播到任何在该项目下方的最顶层项目。除非收到新的鼠标按下事件,否则不会将鼠标事件发送到该项目。

默认实现处理基本项目交互,例如选择和移动。如果您在重新实现此函数时想保留基本实现,请在您的重新实现中调用 QGraphicsItem::mousePressEvent()。

对于既不是 movable 也不是 selectable 的项目,将忽略 event

mouseReleaseEvent(event)#
参数:

eventQGraphicsSceneMouseEvent

此事件处理程序用于事件 event,可以重新实现以接收此项目的鼠标释放事件。

event上调用QEvent::ignore()或QEvent::accept()没有影响。

默认实现处理基本项目交互,例如选择和移动。如果您在重新实现此函数时想保留基本实现,请在您的重新实现中调用 QGraphicsItem::mouseReleaseEvent()。

请注意,mousePressEvent() 决定哪个图形项接收鼠标事件。详见 mousePressEvent() 的描述。

moveBy(dx, dy)#
参数:
  • dx – float

  • dy – float

通过 dx 水平方向移动项,以及通过 dy 垂直方向移动项。此函数相当于调用 setPos ( pos() + QPointF(dx, dy)).

opacity()#
返回类型:

浮点

返回该项的本地不透明度,介于 0.0(透明)和 1.0(不透明)之间。此值与父项和祖先项的值合并为 effectiveOpacity() 。实际不透明度决定如何渲染项,并且还会影响在查询如 items() 等函数时其可见性。

不透明度属性决定了传递给 paint() 函数的画家状态。如果项被缓存,即 ItemCoordinateCacheDeviceCoordinateCache ,则有效属性将应用于渲染项的缓存。

默认不透明度为 1.0;完全不透明。

opaqueArea()#
返回类型:

QPainterPath

此虚拟函数返回一个表示此项目不透明区域的形状。如果一个区域使用不透明画刷或颜色(即不透明)填充,则该区域为不透明。

此函数由 isObscuredBy() 使用,该函数由底层项目调用以确定它们是否被此项目遮挡。

默认实现返回一个空的 QPainterPath,表示此项目完全透明,不会遮挡其他任何项目。

abstract paint(painter, option[, widget=None])#
参数:

警告

此部分包含从C++自动翻译为Python的片段,可能包含错误。

此函数(通常由 QGraphicsView 调用)在局部坐标系中绘制项目的內容。

在一个新的 QGraphicsItem 子类中重写此函数以提供项目的绘图实现,使用 painter。保留参数提供项目的样式选项,如其状态、暴露的区域及其细节层次提示。不同的widget参数是可选的。如果提供,它指向被绘制到的小部件;否则,则为0。对于缓存的绘制,)widget总是0。

def paint(self, painter,):
                          QStyleOptionGraphicsItem option,
                          QWidget widget)

    painter.drawRoundedRect(-10, -10, 20, 20, 5, 5)

默认情况下,painter的笔是0宽度,其笔从绘制设备的调色板初始化为QPalette::Text画刷。画刷初始化为QPalette::Window。

确保所有绘图都在boundingRect()的边界内进行,以避免出现渲染伪影(因为QGraphicsView不会为您裁剪 painter)。特别是,当QPainter使用分配的 QPen 绘制形状轮廓时,轮廓的一半将绘制在形状外部,另一半将绘制在您正在渲染的形状内部(例如,使用2个单位宽度的笔,您必须在boundingRect()内1个单位的位置绘制轮廓)。QGraphicsItem不支持具有非零宽度的装饰笔。

所有的绘图都在局部坐标系中进行。

注意

必须确保一个项目总是以完全相同的方式重新绘制自身,除非调用了update();否则可能会出现视觉伪影。换句话说,两次后续对 paint() 的调用必须始终产生相同的输出,除非它们之间调用了update()

注意

即使没有明显调用update(),为项目启用缓存也不能保证绘图视图框架只调用一次 paint()。有关更多详细信息,请参阅setCacheMode()的文档。

面板()#
返回类型:

QGraphicsItem

返回项目的面板,如果没有面板,则返回 None。如果是面板,将返回自身。否则将返回最近的祖先面板。

另请参阅

isPanel() ItemIsPanel

面板模态()#
返回类型:

面板模态

返回此项目的模态。

另请参阅

设置面板模态()

parentItem()#
返回类型:

QGraphicsItem

返回指向该项父项的指针。如果该项没有父项,返回 None

parentObject()#
返回类型:

QGraphicsObject

返回指向该项父项的指针,将其转换为 QGraphicsObject 类型。如果父项不是 QGraphicsObject 类型,则返回 None

另请参阅

parentItem() childItems()

parentWidget()#
返回类型:

QGraphicsWidget

返回指向该项父小部件的指针。小部件的父项是最靠近的小部件。

另请参阅

parentItem() childItems()

pos()#
返回类型:

QPointF

返回项在父坐标中的位置。如果项没有父项,其位置以场景坐标给出。

项的位置描述其在父坐标中的位置(局部坐标(0,0));该函数返回与 mapToParent (0, 0) 相同。

为了方便,您还可以调用 scenePos() 以确定无论其父项如何,项在场景坐标中的位置。

prepareGeometryChange()#

警告

此部分包含从C++自动翻译为Python的片段,可能包含错误。

为更改几何形状准备项。在更改项的边界矩形之前调用此函数,以保持 QGraphicsScene 的索引最新。

prepareGeometryChange() 如果需要,将调用 update()

示例

def setRadius(self, newRadius):

    if radius != newRadius:
        prepareGeometryChange()
        radius = newRadius

另请参阅

boundingRect()

removeFromIndex()#
removeSceneEventFilter(filterItem)#
参数:

filterItemQGraphicsItem

filterItem 中移除此对象的 Evenet 滤波器。

resetTransform()#

将此对象的变换矩阵重置为单位矩阵,或将所有变换属性重置为默认值。此操作相当于调用 setTransform(QTransform())

rotation()#
返回类型:

浮点

返回绕 Z 轴顺时针旋转的角度(以度为单位)。默认值为 0(即对象未旋转)。

旋转与对象的 scale()transform()transformations() 结合使用,以便将对象的坐标系映射到父对象。

另请参阅

setRotation() transformOriginPoint() Transformations

scale()#
返回类型:

浮点

返回对象的缩放因子。默认缩放因子为 1.0(即对象未缩放)。

缩放与对象的 rotation()transform()transformations() 结合使用,以便将对象的坐标系映射到父对象。

另请参阅

setScale() rotation() Transformations

scene()#
返回类型:

QGraphicsScene

返回项目的当前场景,如果项目未存储在场景中,则返回 None

要将项目添加或移动到场景中,请调用 addItem()

sceneBoundingRect()#
返回类型:

QRectF

返回该项目在场景坐标中的边界矩形,通过组合 sceneTransform()boundingRect() 来实现。

sceneEvent(event)#
参数:

event - QEvent

返回类型:

布尔值

这个虚拟函数接收此条目的事件。重新实现此函数以在事件被派送到专门的事件处理程序之前拦截事件。contextMenuEvent() , focusInEvent() , focusOutEvent() , hoverEnterEvent() , hoverMoveEvent() , hoverLeaveEvent() , keyPressEvent() , keyReleaseEvent() , mousePressEvent() , mouseReleaseEvent() , mouseMoveEvent() , 以及 mouseDoubleClickEvent() .

如果事件被识别和处理,则返回 true;否则,返回 false(例如,如果未识别事件类型)。

event 是拦截的事件。

sceneEventFilter(watched, event)#
参数:
返回类型:

布尔值

watched 条目过滤事件。 event 是过滤的事件。

在子类中重写此函数可以使条目作为其他事件过滤器使用,拦截在它们能够响应之前发送给这些条目的所有事件。

重写必须返回 true 以防止对指定事件的进一步处理,确保它不会被发送到被监视的条目,或者返回 false 以指示事件系统应进一步传播该事件。

scenePos()#
返回类型:

QPointF

返回条目在场景坐标中的位置。这与调用 mapToScene(0, 0) 相当。

sceneTransform()#
返回类型:

QTransform

警告

此部分包含从C++自动翻译为Python的片段,可能包含错误。

返回此元素的场景变换矩阵。此矩阵可以用于将坐标和几何形状从此元素的局部坐标系映射到场景坐标系。要从场景映射坐标,必须首先反转返回的矩阵。

示例

rect = QGraphicsRectItem()
rect.setPos(100, 100)
rect.sceneTransform().map(QPointF(0, 0))
# returns QPointF(100, 100)
rect.sceneTransform().inverted().map(QPointF(100, 100))
# returns QPointF(0, 0)

与仅返回项目的本地变换的 transform() 不同,此函数包括元素(及其父元素)的位置,以及所有变换属性。

setAcceptDrops(on)#
参数:

on – bool

如果 on 为 true,则此元素将接受拖放事件;否则,它对拖放事件是透明的。默认情况下,元素不接受拖放事件。

另请参阅

acceptDrops()

setAcceptHoverEvents(enabled)#
参数:

enabled – bool

如果 enabled 为 true,则此元素将接受悬停事件;否则,它将忽略它们。默认情况下,元素不接受悬停事件。

悬停事件在当前没有鼠标捕获元素时传递。当鼠标光标进入一个元素、在其内部移动以及光标离开一个元素时发送。悬停事件通常用于当光标进入时突出显示一个元素,以及跟踪当光标悬停在元素上时的鼠标光标(相当于 mouseTracking )。

父元素在其子元素之前接收悬停进入事件,在其子元素之后接收离开事件。但是,如果光标进入一个子元素,父元素不会接收到悬停离开事件;父元素保持在“悬停”状态,直到光标离开其区域,包括其子元素的区域。

如果父元素处理子元素事件,则当光标穿过其子元素时,它将接收悬停移动、拖动移动和拖放事件,但它不会为子元素接收悬停进入和悬停离开、拖动进入和拖动离开事件。

具有窗口装饰的QGraphicsWidget将接受悬停事件,不管acceptHoverEvents()的值如何。

setAcceptTouchEvents(enabled)#
参数:

enabled – bool

如果enabled为真,则此项目将接受触摸事件;否则,将忽略它们。默认情况下,项目不接受触摸事件。

另请参阅

acceptTouchEvents()

setAcceptedMouseButtons(buttons)#
参数:

buttons - MouseButton的组合

设置此项目可以接受鼠标事件的鼠标按钮。

默认情况下,接受所有鼠标按钮。如果项目接受鼠标按钮,则在为该按钮传递鼠标按下事件时,它将成为鼠标抓取项目。但是,如果项目不接受鼠标按钮,QGraphicsScene将 forwards 鼠标事件到下面的第一个接受的项目。

要禁用项目的鼠标事件(即使其对鼠标事件透明),请调用setAcceptedMouseButtons(Qt::NoButton)。

setActive(active)#
参数:

active – bool

如果active为真,并且场景是活动的,则此项目的面板将被激活。否则,面板将被停用。

如果项目不是活动场景的一部分,则当场景变为活动或项目被添加到场景时,active将决定面板会发生什么。如果为真,当项目被添加到场景或场景激活时,项目的面板将被激活。否则,无论场景激活状态如何,项目都将保持非活动状态。

setBoundingRegionGranularity(granularity)#
参数:

granularity – float

设置边界区域的粒度到 granularity;一个介于 0 和 1(包含)之间的值。默认值是 0(即最低粒度,边界区域对应于项目的边界矩形)。

粒度由 boundingRegion() 使用,以计算项目的边界区域应该有多精细。可达到的最高粒度是 1,此时 boundingRegion() 会返回针对相应设备可能的最佳轮廓(例如,对于 QGraphicsView 视口,这将给出一个像素完美的边界区域)。最低可能的粒度是 0。值为 granularity 描述了设备分辨率与边界区域分辨率的比率(例如,0.25 的值将提供一个区域,其中每个块对应 4x4 设备单元/像素)。

setCacheMode(mode[, cacheSize=QSize()])#
参数:

设置项目的缓存模式为 mode

可选的 logicalCacheSize 参数仅在 ItemCoordinateCache 模式下使用,它描述了缓存缓冲区的解析度;如果 logicalCacheSize 是 (100, 100),则无论项目的逻辑大小如何,QGraphicsItem 都将把项目适配到图形内存中的100x100像素。默认情况下,QGraphicsItem 使用 boundingRect() 的大小。对于除了 ItemCoordinateCache 之外的所有缓存模式,logicalCacheSize 会被忽略。

如果您的项目在重绘时花费了大量时间,缓存可以提高渲染速度。在某些情况下,缓存也可能减慢渲染速度,特别是在项目重绘所用时间少于 QGraphicsItem 从缓存重新绘制时。

当启用缓存时,项目的 paint() 函数通常会绘制到一个离屏位图缓存中;对于任何后续的重涂请求,图形视图框架都会从缓存中重绘。这种方法与 QGLWidget 配合得非常好,它将所有缓存都存储为 OpenGL 纹理。

请注意,可能需要更改 QPixmapCache 的缓存限制以获得最佳性能。

您可以在 CacheMode 文档中了解有关不同缓存模式的更多信息。

注意

启用缓存并不意味着项目的 paint() 函数只有在响应显式的 update() 调用时才会被调用。例如,在内存压力下,Qt 可能会决定丢弃一些缓存信息;在这种情况下,即使没有 update() 调用,项目的 paint() 函数仍然会被调用(即,就像没有启用缓存一样)。

setCursor(cursor)#
参数:

cursorQCursor

警告

此部分包含从C++自动翻译为Python的片段,可能包含错误。

设置项的当前光标形状为 cursor。当鼠标悬停在该项上时,鼠标光标将采用此形状。请参阅预定义光标对象列表,以查看一系列有用的光标形状。

编辑项目可能希望使用 I-beam 光标

item.setCursor(Qt.IBeamCursor)

如果没有设置光标,将使用此项目下项目的光标。

setData(key, value)#
参数:
  • key – int

  • value – 对象

将此项的键 key 的自定义数据设置为 value

自定义项数据对于存储任何项的任意属性非常有用。Qt不使用此功能来存储数据;它仅提供给用户以方便。

另请参阅

data()

setEnabled(enabled)#
参数:

enabled – bool

如果 enabled 为真,则该项启用;否则,禁用。

禁用项是可见的,但它们不会接收任何事件,也无法获得焦点或被选中。鼠标事件将被丢弃;除非项同时不可见,或者不接收鼠标事件(请参阅 acceptedMouseButtons() ),否则不会传播。禁用项不能成为鼠标捕获者,因此,当捕获鼠标时如果项被禁用,它就像在禁用时有焦点时失去焦点一样,会失去捕获。

传统上使用灰化颜色绘制禁用项(请参阅 QPalette::Disabled)。

如果禁用父项,则其所有子项也将被禁用。如果启用父项,则所有子项将被启用,除非它们已被明确禁用(也就是说,如果您在一个子项上调用 setEnabled(false),则即使在父项禁用后再次启用,子项也不会重新启用)。

项默认启用。

注意

如果您安装了一个事件过滤器,您仍然可以在事件传递到项目之前截获它们;这种机制忽略了项目的启用状态。

另请参阅

isEnabled()

setFiltersChildEvents(enabled)链接到此处
参数:

enabled – bool

如果enabled为true,则该项目将设置所有子项的过滤器(即,所有 intend for 任何子项的事件都将发送到该项目);否则,如果enabled为false,则该项目将仅处理自己的事件。默认值是false。

另请参阅

filtersChildEvents()

setFlag(flag[, enabled=true])链接到此处
参数:

如果enabled为true,则启用项目标志flag;否则,它被禁用。

另请参阅

flags() setFlags()

setFlags(flags)链接到此处
参数:

flagsGraphicsItemFlag的组合

将项目标志设置为flags。在flags中启用的所有标志均启用;不在flags中的所有标志均禁用。

如果项目有焦点,并且flags没有启用ItemIsFocusable,则项目会因调用此函数而失去焦点。同样地,如果项目被选中,并且flags没有启用ItemIsSelectable,则项目将自动取消选中。

默认情况下,没有启用任何标志。(QGraphicsWidget默认启用ItemSendsGeometryChanges标志,以便跟踪位置更改。)

另请参阅

flags() setFlag()

setFocus([focusReason=Qt.OtherFocusReason])#
参数:

focusReasonFocusReason

将键盘输入焦点设置到该元素上。此函数产生的任何焦点事件都将传递focusReason参数,它用于解释导致元素获得焦点的原因。

只有设置了ItemIsFocusable标志的启用元素才能接受键盘焦点。

如果该元素不可见、未激活或未与场景关联,则它不会立即获得输入焦点。但是,如果它以后变为可见,它将作为其子元素树中的首选焦点元素登记注册。

调用此函数后,此元素将接收一个带有focusReasonfocus in event事件。如果有其他元素已经拥有焦点,则该元素将首先接收一个focus out event事件,表示它已失去输入焦点。

setFocusProxy(item)#
参数:

itemQGraphicsItem

将元素的焦点代理设置为item

如果一个元素拥有焦点代理,那么当元素获得输入焦点时,焦点代理将接收到输入焦点。元素本身仍然拥有焦点(即 at hasFocus() 将返回true),但只有焦点代理将接收到键盘输入。

焦点代理本身可以有自己的焦点代理,并且可以一直这样下去。在这种情况中,键盘输入将由最外层的焦点代理处理。

焦点代理item必须属于与该元素相同的场景。

setGraphicsEffect(effect)#
参数:

effectQGraphicsEffect

effect 设置为项目的效果。如果该项目已经安装了效果,QGraphicsItem 将在安装新的 effect 之前删除现有效果。您可以通过调用 setGraphicsEffect(None) 来删除现有效果。

如果 effect 是不同项目上的已安装效果,setGraphicsEffect() 将从该项目删除效果并安装到该项目。

QGraphicsItem 将获得 effect 的所有者权。

注意

此函数将对自身及其所有子项应用效果。

另请参阅

graphicsEffect()

setGroup(group)#
参数:

groupQGraphicsItemGroup

将此项目添加到项目组 group。如果 groupNone,则从当前组中删除该项目,并将其添加为上一组父级的子级。

另请参阅

group() createItemGroup()

setHandlesChildEvents(enabled)#
参数:

enabled – bool

如果 enabled 为 true,则将此项目设置为处理其所有子项的所有事件(即,任何为任何子项打算的事件都发送到该项目);否则,如果 enabled 为 false,则该项目将仅处理自己的事件。默认值为 false。

此属性对于项组很有用;它允许一个项代表其子项处理事件,而不是其子项单独处理它们的事件。

如果一个子项接受悬停事件,那么当光标通过子项时,父项将收到悬停移动事件,但不会代表其子项接收到悬停进入和悬停离开事件。

另请参阅

handlesChildEvents()

setInputMethodHints(hints)#
参数:

hintsInputMethodHint 的组合

将此项目的当前输入法提示设置为 hints

setOpacity(opacity)#
参数:

opacity – float

设置此项目局局长透明度,范围介于0.0(透明)到1.0(不透明)。项目的局部透明度与父和祖代的透明度合并为 PySide6.QtWidgets.QGraphicsItem.effectiveOpacity()

默认情况下,透明度会从父代传播到子代,因此如果父代的透明度为0.5,而子代也是0.5,则子代的有效透明度将变为0.25。

不透明度属性决定了传递给 paint() 函数的画家状态。如果项被缓存,即 ItemCoordinateCacheDeviceCoordinateCache ,则有效属性将应用于渲染项的缓存。

有两个项目标志会影响项目透明度与父代透明度的合并方式:ItemIgnoresParentOpacityItemDoesntPropagateOpacityToChildren

注意

将项目透明度设置为0不会使项目消失(根据 PySide6.QtWidgets.QGraphicsItem.isVisible()),但项目将被视为不可见。有关更多信息,请参阅 PySide6.QtWidgets.QGraphicsItem.setVisible() 的说明。

setPanelModality(panelModality)#
参数:

panelModalityPanelModality

将此项目的模式设置为 panelModality

更改可见项目的模式将立即生效。

另请参阅

panelModality()

setParentItem(parent)#
参数:

parentQGraphicsItem

将此项目的父项目设置为 newParent。如果此项目已经有父项目,它首先会从之前父项目中删除。如果 newParent 为0,则此项目将成为顶级项目。

注意,这隐式地将该图形项添加到父级的场景中。您不应自己将项目添加到场景中。

当对newParent的祖先项调用此函数时,其行为是未定义的。

另请参阅

parentItem() childItems()

setPos(pos)#
参数:

posQPointF

将项目的位置设置为pos,该位置位于父级坐标系中。对于没有父级的项,pos位于场景坐标系中。

项目的位置描述了其在父级坐标系中的原点(局部坐标(0,0))。

setPos(x, y)
参数:
  • x – float

  • y – float

这是一个重载的函数。

此便利函数相当于调用setPos(QPointF(x,y))。

setRotation(angle)#
参数:

angle – float

设置围绕Z轴顺时针旋转的angle,单位为度。默认值是0(即项目未旋转)。分配负值将使项目逆时针旋转。通常旋转角度范围在(-360,360)之间,但也可能分配此范围之外的值(例如,370度的旋转与10度的旋转相同)。

项目围绕其变换原点旋转,默认是(0,0)。您可以通过调用setTransformOriginPoint()选择不同的变换原点。

旋转与对象的 scale()transform()transformations() 结合使用,以便将对象的坐标系映射到父对象。

setScale(scale)#
参数:

scale – float

设置项的缩放因子。默认缩放因子为1.0(即项目未缩放)。缩放因子为0.0将使项目坍塌到单个点。如果提供负缩放因子,则项目将翻转并镜像(即旋转180度)。

该对象围绕其变换原点进行缩放,默认原点为 (0, 0)。您可以通过调用 setTransformOriginPoint() 来选择不同的变换原点。

缩放与对象的 rotation()transform()transformations() 结合使用,以便将对象的坐标系映射到父对象。

setSelected(selected)#
参数:

selected – bool

如果 selected 为真且此对象可选中,则此对象被选中;否则,它未被选中。

如果该对象在组中,此函数将切换整个组的选中状态。如果组被选中,则组中的所有对象也被选中,如果组未被选中,则组中没有任何对象被选中。

只有可见、启用、可选择的项可以被选中。如果 selected 为真且此对象不可见、禁用或不可选择,则此函数不执行任何操作。

默认情况下,项不能被选中。要启用选择,请设置 ItemIsSelectable 标志。

此函数为方便起见提供,可单独切换项的选中状态。但是,选择项的更常见方法是调用 setSelectionArea() ,它将在场景中指定区域内的所有可见、启用和可选择的项上调用此函数。

setToolTip(toolTip)#
参数:

toolTip – str

将对象的工具提示设置为 toolTip。如果 toolTip 为空,则清除对象的工具提示。

另请参阅

toolTip() QToolTip

setTransform(matrix[, combine=false])#
参数:

将项目当前转换矩阵设置为 matrix.

如果 combine 是 true,则 matrix 与当前矩阵结合;否则,matrix 替换 当前矩阵。默认情况下,combine 是 false。

为了简化使用转换视图与项目交互的过程,QGraphicsItem 提供了 mapTo... 和 mapFrom... 函数,可以将项目坐标和场景坐标之间进行转换。例如,您可以调用 mapToScene() 将项目坐标映射到场景坐标,或调用 mapFromScene() 将场景坐标映射到项目坐标。

变换矩阵与项目的旋转、缩放和变换组合为一个综合变换,将项目的坐标系映射到其父元素。

setTransformOriginPoint(origin)#
参数:

originQPointF

设置项目坐标中变换的原点。

另请参阅

transformOriginPoint() Transformations

setTransformOriginPoint(ax, ay)
参数:
  • ax – float

  • ay – float

这是一个重载的函数。

设置元素坐标系统中变换的原点。这相当于调用 setTransformOriginPoint (QPointF(x, y)).

另请参阅

setTransformOriginPoint() Transformations

setTransformations(transformations)#
参数:

transformations – .list of QGraphicsTransform

设置当前应用于此元素的图形转换(QGraphicsTransform)的列表。

如果您只想旋转或缩放元素,请调用 setRotation()setScale()。如果您想在元素上设置任意变换,可以调用 setTransform() .

QGraphicsTransform 用于在元素上应用和控制一系列单独的变换操作。它在动画中特别有用,在这些动画中,每个变换操作都需要独立或以不同的方式插值。

变换与元素的 rotation()scale()transform() 结合,将元素坐标系映射到父元素。

另请参阅

transformations() scale() setTransformOriginPoint() Transformations

setVisible(visible)#
参数:

visible – bool

如果 visible 为真,则项目将变为可见。否则,项目将变为不可见。不可见的项目不会被绘制,也不会接收任何事件。特别是,鼠标事件会直接穿过不可见的项目,并传递给可能在其后面的任何项目。不可见的项目也无法被选中,它们无法接收输入焦点,且不会被 QGraphicsScene 的项目位置函数检测到。

如果一个项目在获取鼠标时变为不可见(即,正在接收鼠标事件时),它将自动失去鼠标抓取,即使再次使项目可见,也不会重新获得抓取;必须接收到一个新的鼠标点击才能重新获得鼠标抓取。

类似地,不可见的项目不能有焦点,因此如果一个项目在变为不可见时具有焦点,它将失去焦点,并且仅通过再次使项目可见是无法恢复焦点的。

如果您隐藏了父项,其所有子项也将被隐藏。如果显示了父项,所有子项都将被显示,除非它们已被明确隐藏(例如,如果您对一个子项调用 setVisible(false),则即使它的父项被隐藏然后再次显示,它也不会重新显示)。

项目默认是可见的;为 new 项目调用 setVisible() 是不必要的。

注意

即使透明度设置为 0,具有透明度的项目仍被认为是可见的,尽管它将像不可见项目一样被处理:鼠标事件会穿过它,它不会被包含在 items() 返回的项目中,等等。但是,项目将保留焦点。

setX(x)#
参数:

x – float

设置项目位置的 x 坐标。等同于调用 setPos (x, y() ).

另请参阅

x() setPos()

setY(y)#
参数:

y – float

设置物品位置的 Y 坐标。相当于调用 setPos ( x() , y)。

另请参阅

y() x() setPos()

setZValue(z)#
参数:

z – float

设置物品的 Z 值为 z。Z 值决定了同层级(相邻)物品的堆叠顺序。Z 值高的同层级物品将始终绘制在 Z 值低的同层级物品之上。

如果恢复 Z 值,物品的插入顺序将决定其堆叠顺序。

Z 值不会以任何方式影响物品的大小。

默认 Z 值为 0。

shape()#
返回类型:

QPainterPath

警告

此部分包含从C++自动翻译为Python的片段,可能包含错误。

返回此物品的形状,作为局部坐标中的 QPainterPath。形状用于许多事情,包括碰撞检测、碰撞测试以及 items() 函数。

默认实现调用 boundingRect() 返回一个简单的矩形形状,但子类可以重写此函数以返回非矩形物品的更准确的形状。例如,圆形物品可以选择返回椭圆形形状以获得更好的碰撞检测。例如

def shape(self):

    path = QPainterPath()
    path.addEllipse(boundingRect())
    return path

形状的外轮廓可能因绘制时使用的笔的宽度和样式而有所不同。如果您想要包含此轮廓在物品的形状中,您可以使用 QPainterPathStroker 从笔触创建形状。

该函数由 contains()collidesWithPath() 的默认实现调用。

show()#

显示项(项默认可见)。

此便捷函数等价于调用 setVisible(true)

另请参阅

hide() setVisible()

stackBefore(sibling)#
参数:

siblingQGraphicsItem

将此项堆叠在 sibling 之前,其中必须是一个兄弟项(即,两项必须具有相同的父项,或者是顶级项)。 sibling 必须与此项具有相同的 Z 值,否则调用此函数将没有效果。

默认情况下,所有兄弟项都按插入顺序堆叠(即,你添加的第一个项将绘制在添加的下一个项之前)。如果有两个项的 Z 值不同,则具有最高 Z 值的项绘制在顶部。当 Z 值相同时,插入顺序将决定堆叠顺序。

另请参阅

setZValue() ItemStacksBehindParent Sorting

toGraphicsObject()#
返回类型:

QGraphicsObject

返回图形项转换为 QGraphicsObject 的结果,如果该类确实是图形对象,否则为 0。

toolTip()#
返回类型:

字符串

返回项的提示信息,如果没有设置提示信息,则返回一个空的 QString。

另请参阅

setToolTip() QToolTip

topLevelItem()#
返回类型:

QGraphicsItem

返回此项目的顶层项目。顶层项目是项目最顶层的祖先项目,其父项为 None。如果一个项目没有父项,则返回其自身的指针(即,顶层项目是其自身的顶层项目)。

另请参阅

parentItem()

topLevelWidget()#
返回类型:

QGraphicsWidget

返回一个指向项目顶层窗口的指针(即项目的祖先,其父项为 None,或其父项不是窗口),如果没有顶层窗口,则返回 None。如果项目是其自身的顶层窗口,则该函数返回指向项目的指针。

transform()#
返回类型:

QTransform

返回此项目的转换矩阵。

转换矩阵与项目的 rotation()scale()transformations() 结合为一个项目的组合转换。

默认转换矩阵是一个单位矩阵。

另请参阅

setTransform()sceneTransform()

transformOriginPoint()#
返回类型:

QPointF

返回项目坐标下的转换原点。

默认为ГдеF(0,0)。

另请参阅

setTransformOriginPoint() Transformations

transformations()#
返回类型:

QGraphicsTransform 的列表

返回一个当前应用于此项目的图形转换列表。

QGraphicsTransform 用于在元素上应用和控制一系列单独的变换操作。它在动画中特别有用,在这些动画中,每个变换操作都需要独立或以不同的方式插值。

变换与元素的 rotation()scale()transform() 结合,将元素坐标系映射到父元素。

另请参阅

setTransformations()scale()rotation()transformOriginPoint()Transformations

type()#
返回类型:

int

警告

此部分包含从C++自动翻译为Python的片段,可能包含错误。

返回一个整型项目类型。所有标准图像项类都关联一个唯一值;请参阅 Type 。这种类型信息由 qgraphicsitem_cast() 用于区分类型。

默认实现(在 QGraphicsItem 中)返回 UserType

要使用自定义项的 qgraphicsitem_cast() ,您需要重新实现此函数并声明一个等于您的自定义项类型的 Type 枚举值。自定义项必须返回一个大于或等于 UserType(65536)的值。

例如

class CustomItem(QGraphicsItem):

# public
   enum { Type = UserType + 1 }
   int type() override

       # Enable the use of qgraphicsitem_cast with this item.
       return Type

   ...

另请参阅

UserType

ungrabKeyboard()#

释放键盘抓取。

ungrabMouse()#

释放鼠标抓取。

unsetCursor()#

从该项目中清除光标。

另请参阅

hasCursor() setCursor()

update([rect=QRectF()])#
参数:

矩形(rect)QRectF

安排在此项中由 rect 覆盖的区域的重绘。每当您的项需要重绘时,例如,如果其外观或大小发生变化,都可以调用此函数。

此函数不会立即引起绘制;相反,它安排了绘制请求,该请求在控制到达事件循环后由 QGraphicsView 处理。项只有在关联的任何视图中可见时才会重绘。

作为该项重绘的副作用,重叠 rect 区域的其他项也可能被重绘。

如果该项不可见(即,isVisible() 返回 false),则此函数不执行任何操作。

另请参阅

paint() boundingRect()

update(x, y, width, height)
参数:
  • x – float

  • y – float

  • width – 浮点数

  • height – 浮点数

这是一个重载的函数。

此便捷函数等价于调用update(QRectF(x, y, width, height)).

updateMicroFocus()#

更新项目的微焦点。

另请参阅

QInputMethod

wheelEvent(event)#
参数:

eventQGraphicsSceneWheelEvent

此事件处理器,对于事件 event,可以重写以接收此项目的事件。如果你重写此函数,则默认接受 event

如果你忽略事件(例如,通过调用QEvent::ignore()),它将传播到此项目之下的任何项目。如果没有项目接受事件,场景将忽略事件,并将其传播到视图(例如,视图的垂直滚动条)。

默认实现在这里是忽略事件。

另请参阅

sceneEvent()

window()#
返回类型:

QGraphicsWidget

返回项目的窗口,或如果没有此项目有窗口,则返回 None。如果项目是窗口,它将返回自身。否则,它将返回最近的窗口祖先。

另请参阅

isWindow()

x()#
返回类型:

浮点

此便捷函数等价于调用 pos() .x()。

另请参阅

setX() y()

y()#
返回类型:

浮点

此便捷函数等价于调用 pos() .y()。

另请参阅

setY() x()

zValue()#
返回类型:

浮点

返回项目的Z值。Z值影响同级(相邻)项目的堆叠顺序。

默认 Z 值为 0。