- class QGraphicsItem#
PySide6.QtWidgets.QGraphicsItem 类是所有在 PySide6.QtWidgets.QGraphicsScene 场景中的图形项的基类。 更多信息...
继承自:
QGraphicsPixmapItem
,QGraphicsLineItem
,QGraphicsItemGroup
,QAbstractGraphicsShapeItem
,QGraphicsSimpleTextItem
,QGraphicsRectItem
,QGraphicsPolygonItem
,QGraphicsPathItem
,QGraphicsEllipseItem
,QGraphicsObject
,QGraphicsWidget
,QGraphicsProxyWidget
,QGraphicsTextItem
,QGraphicsSvgItem
,QGraphicsVideoItem
,QLegend
,QChart
,QPolarChart
概述#
方法#
def
__init__()
def
acceptDrops()
定义
addToIndex()
定义
cacheMode()
定义
childItems()
定义
clearFocus()
定义
clipPath()
定义
cursor()
定义
data()
定义
flags()
定义
focusItem()
定义
focusProxy()
定义
grabMouse()
定义
group()
定义
hasCursor()
定义
hasFocus()
定义
hide()
定义
isActive()
定义
isClipped()
定义
isEnabled()
定义
isObscured()
定义
isPanel()
定义
isSelected()
定义
isVisible()
定义
isWidget()
定义
isWindow()
定义
mapToItem()
定义
mapToScene()
定义
moveBy()
定义
opacity()
定义
panel()
定义
parentItem()
定义
pos()
定义
rotation()
定义
scale()
定义
scene()
定义
scenePos()
定义
setActive()
定义
setCursor()
定义
setData()
定义
setEnabled()
定义
setFlag()
定义
setFlags()
定义
setFocus()
定义
setGroup()
定义
setOpacity()
定义
setPos()
定义
setScale()
定义
setToolTip()
定义
setVisible()
定义
setX()
定义
setY()
定义
setZValue()
定义
show()
定义
toolTip()
定义
transform()
定义
update()
定义
window()
定义
x()
定义
y()
定义
zValue()
虚方法#
定义
advance()
定义
contains()
定义
dropEvent()
定义
extension()
定义
itemChange()
定义
opaqueArea()
定义
paint()
定义
sceneEvent()
定义
shape()
定义
type()
定义
wheelEvent()
注意
此文档可能包含从C++自动翻译为Python的代码片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译存在问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE创建工单的方式让我们知道。
详细描述#
警告
此部分包含从C++自动翻译为Python的片段,可能包含错误。
它为您编写自己的自定义项目提供了一个轻量级的基础。这包括定义项目的几何形状、碰撞检测、其绘制实现以及通过事件处理器进行的项目交互。《
QGraphicsItem
》是图形视图框架的一部分。为了方便起见,Qt提供了一系列标准图形项目,用于最常见的形状。
QGraphicsEllipseItem
提供了一个椭圆形项目QGraphicsLineItem
提供了一个线条项目QGraphicsPathItem
提供了一个任意路径项目QGraphicsPixmapItem
提供了一个位图项目QGraphicsPolygonItem
提供了一个多边形项目QGraphicsRectItem
提供了一个矩形项目QGraphicsSimpleTextItem
提供了一个简单的文本标签项目QGraphicsTextItem
提供了一个高级文本浏览器项目
该项目的所有几何信息都是基于其本地坐标系。项目的位置(
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。碰撞检测可以通过两种方式进行
变换#
QGraphicsItem
除了基位置pos()
外,还支持投影变换。更改项目变换有多种方法。对于简单的变换,您可以调用方便函数setRotation()
或setScale()
,或者将任何变换矩阵传递给setTransform()
。对于高级变换控制,您还可以通过调用setTransformations()
来设置多个组合变换。项目变换是从父元素累积到子元素的,因此如果父元素和子元素都旋转了90度,子元素的总变换将是180度。同样,如果项目父元素缩放为其原始大小的2倍,其子元素也将增加两倍大小。项目的变换不会影响其自身的局部几何形状;所有几何函数(例如
contains()
、update()
以及所有映射函数)都在局部坐标系中运行。为了方便,QGraphicsItem
提供了函数sceneTransform()
,它返回项目的总变换矩阵(包括其位置以及所有父元素的位置和变换),以及scenePos()
,它返回其在场景坐标系中的位置。要重置项目的矩阵,请调用resetTransform()
。某些变换操作的结果依赖于它们的应用顺序。例如,如果您先缩放一个变换,然后旋转它,您可能会得到与先旋转再变换时的不同结果。然而,您在
QGraphicsItem
上设置的变换属性顺序不会影响最终的结果;QGraphicsItem
总是以固定的、定义好的顺序应用属性。应用了项目的基变换(
transform()
)按照顺序应用了项目的变换列表(
transformations()
)该对象相对于其变换原点(
rotation()
,transformOriginPoint()
)旋转该对象相对于其变换原点(
scale()
,transformOriginPoint()
)缩放
绘制
paint()
函数由QGraphicsView
调用以绘制对象的内部。对象没有自己的背景或默认填充;在update()
中可以进行重绘安排,可选地传递需要重绘的矩形。根据对象是否可见,该对象可能会重新绘制或不会重新绘制;在QGraphicsItem
中没有与repaint()
等效的函数。视图绘制对象,首先是父项,然后是子项,按照升序堆叠顺序绘制。您可以调用
setZValue()
来设置一个项的堆叠顺序,并调用zValue()
来测试它,其中z值低的项先于z值高的项进行绘制。堆叠顺序适用于同级的项;父项总是先于其子项绘制。排序
所有对象都按照定义的、稳定的顺序绘制,并且这个顺序决定了当您单击场景时哪些对象将首先接收到鼠标输入。通常,您无需担心排序,因为对象遵循“自然顺序”,遵循场景的逻辑结构。
项的子项堆叠在父项之上,同级项按照插入顺序堆叠(即,在它们被添加到场景或相同父项中的顺序相同)。如果您先添加项A,然后添加项B,那么B将堆叠在A之上。之后添加项C,则项的堆叠顺序将是A,然后是B,然后是C。
以下示例显示了拖放机器人示例中所有身体部位的堆叠顺序。身体是根项(其他所有项都是身体的子项或后代),因此它首先绘制。接下来绘制头部,因为它是身体子项列表中的第一个项。然后绘制上左臂。由于下臂是上臂的子项,因此接着绘制下臂,然后绘制上臂的下一个同级项,即上右臂,依此类推。
对于高级用户,有方法可以修改对象的排序方式
您可以调用
setZValue()
方法在项目上显式地堆叠在其它兄弟项目之上或之下。项目的默认Z值为0。具有相同Z值的项将按照插入顺序堆叠。您可以调用
stackBefore()
方法来重新排序子项列表。这将直接修改插入顺序。您可以设置
ItemStacksBehindParent
标志来让子项在其父项后面进行堆叠。
两个兄弟项目的堆叠顺序也适用于每个项目的子项目及其后代项目。因此,如果一个项目在另一个项目之上,则其所有子项目也将在其他项目的所有子项目之上。
事件#
QGraphicsItem
通过虚拟函数sceneEvent()
接收来自QGraphicsScene
的事件。这个函数将一些常见事件分发到一组便利的事件处理器中contextMenuEvent()
处理上下文菜单事件focusInEvent()
和focusOutEvent()
处理聚焦进和离开的事件hoverEnterEvent()
、hoverMoveEvent()
和hoverLeaveEvent()
处理悬停进入、移动和离开事件inputMethodEvent()
处理输入事件,以支持无障碍访问keyPressEvent()
和keyReleaseEvent()
处理按键和释放事件mousePressEvent()
、mouseMoveEvent()
、mouseReleaseEvent()
和mouseDoubleClickEvent()
处理鼠标按下、移动、释放、点击和双击事件
您可以通过安装事件过滤器来过滤其他任何项的事件。此功能与 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()
通知的ItemPositionChange
、ItemPositionHasChanged
、ItemTransformChange
、ItemTransformHasChanged
、ItemRotationChange
、ItemRotationHasChanged
、ItemScaleChange
、ItemScaleHasChanged
、ItemTransformOriginPointChange
和ItemTransformOriginPointHasChanged
的通知。出于性能考虑,这些通知默认是禁用的。您必须启用此标志以接收位置和变换变化的通知。此标志自 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始终以最大质量渲染。
另请参阅
- class PanelModality#
此枚举指定了模态面板的行为。模态面板是一种阻止其他面板输入的面板。请注意,模态面板的子项不会受到阻止。
值包括
常数
描述
QGraphicsItem.NonModal
面板不是模态的,不会阻止其他面板的输入。这是面板的默认值。
QGraphicsItem.PanelModal
面板对一个项层次结构是模态的,并阻止其父窗格、所有祖父母面板以及其父窗格和祖父母面板的所有兄弟姐妹的输入。
QGraphicsItem.SceneModal
窗口对整个场景是模态的,并阻止所有面板的输入。
新自版本 4.6。
- class Extension#
- __init__([parent=None])#
- 参数:
parent –
QGraphicsItem
使用给定的
parent
项构建一个QGraphicsItem
。它不会修改由 QObject::parent() 返回的父对象。如果
parent
是None
,您可以通过调用addItem()
将项添加到场景中。然后,项将成为顶级项。另请参阅
- acceptDrops()#
- 返回类型:
布尔值
如果此项可以接收拖放事件,则返回
true
;否则,返回false
。默认情况下,项不接受拖放事件;项对拖放事件不可见。另请参阅
- acceptHoverEvents()#
- 返回类型:
布尔值
如果项接受悬停事件(
QGraphicsSceneHoverEvent
),则返回true
;否则,返回false
。默认情况下,项不接受悬停事件。- acceptTouchEvents()#
- 返回类型:
布尔值
如果项目接受触摸事件,则返回
true
;否则,返回false
。默认情况下,项目不接受触摸事件。- acceptedMouseButtons()#
- 返回类型:
Qt的
MouseButton
组合
返回此项目接受鼠标事件所需的鼠标按钮。默认情况下,接受所有鼠标按钮。
如果项目接受鼠标按钮,当传递该鼠标按钮的鼠标按下事件时,它将成为鼠标捕获项目。然而,如果项目不接受该按钮,
QGraphicsScene
将将鼠标事件转发到其下方的第一个接受鼠标事件的项目。- addToIndex()#
- advance(phase)#
- 参数:
phase – int
此虚拟函数由
advance()
槽对所有项目调用两次。在第一个阶段,所有项目使用phase
=0 被调用,表示场景中的项目即将前进,然后所有项目使用phase
=1 被调用。如果需要简单的场景控制动画,请重新实现此功能以更新您的项目。默认实现不执行任何操作。
此函数旨在用于动画。另一个选择是从 QObject 和
QGraphicsItem
多重继承,并使用动画框架。警告
此部分包含从C++自动翻译为Python的片段,可能包含错误。
此纯虚拟函数将项目的外部边界定义为矩形;所有绘图都必须限制在项目边界矩形的内部。
QGraphicsView
使用此来决定项目是否需要重绘。尽管项目可以是任意形状的,但边界矩形总是矩形的,而且不受项目变换的影响。
如果想要更改项的外接矩形,必须首先调用
prepareGeometryChange()
。这将通知场景即将发生更改,以便它可以更新项的几何索引;否则,场景将不会知道项的新几何形状,结果不可定义(通常,渲染后的视图中会留下渲染痕迹)。重新实现此函数以便
QGraphicsView
确定需要重新绘制的小部件部分,如果有的话。注意:对于绘制轮廓/线条的形状,重要的是要将笔宽度的一半包含在外接矩形中。尽管如此,不必对抗锯齿进行补偿。
示例
def boundingRect(self): penWidth = 1 return QRectF(-radius - penWidth / 2, -radius - penWidth / 2, diameter + penWidth, diameter + penWidth)
- boundingRegion(itemToDeviceTransform)#
- 参数:
itemToDeviceTransform –
QTransform
- 返回类型:
返回此项的外接区域。返回区域的坐标空间取决于
itemToDeviceTransform
。如果您传递一个恒等变换作为参数,则此函数将返回一个局部坐标区域。外接区域描述了项的可视内容的大致轮廓。虽然计算成本较高,但它比
boundingRect()
更精确,并且可以帮助在项更新时避免不必要的重绘。这尤其适用于细长的项(例如线条或简单的多边形)。您可以通过调用setBoundingRegionGranularity()
来调整外接区域的粒度。默认粒度为 0;该项的外接区域与其外接矩形相同。itemToDeviceTransform
是从项坐标到设备坐标的变换。如果您想使此函数返回场景坐标中的 QRegion,可以将sceneTransform()
作为参数传递。- boundingRegionGranularity()#
- 返回类型:
浮点
获取项目的边界区域粒度;一个介于包括0和1之间的值。默认值为0(即最低粒度,边界区域对应于项目的边界矩形)。
返回此项目的缓存模式。默认模式是
NoCache
(即禁用缓存,所有绘图都是即时的)。另请参阅
- childItems()#
- 返回类型:
返回此项的子项列表。
项目按堆叠顺序排序。这既考虑了项目的插入顺序,也考虑了它们的Z值。
另请参阅
返回此项后代(即其子项、他们的子项等)的局部坐标中的边界矩形。矩形将包含在它们映射到局部坐标之后的所有后代。如果项目没有子项,此函数返回一个空的QRectF。
这不包括此项目的自己的边界矩形;它只返回其后代的累积边界矩形。如果您需要包括此项目的边界矩形,可以通过使用QRectF::operator|()将
boundingRect()
添加到childrenBoundingRect()
中。此函数的复杂度是线性的;它通过迭代所有后代来确定返回的边界矩形的尺寸。
- clearFocus()#
从项目中获取键盘输入焦点。
如果有焦点,一个
focusOutEvent
被发送到该项目以通知它它即将失去焦点。只有设置了
ItemIsFocusable
标志的项目,或者设置了适当的焦点策略的小部件,才能接受键盘焦点。- clipPath()#
- 返回类型:
返回此项的剪切路径,如果没有剪切则返回空的QPainterPath。剪切路径限制项的显示和交互(即,限制项可以绘制区域和接收事件的范围)。
您可以通过设置
ItemClipsToShape
或ItemClipsChildrenToShape
标志来启用剪切。项的剪切路径是通过交集所有剪切父项的形状来计算的。如果设置了ItemClipsToShape
,最终的剪切将与项自己的形状进行交集。- collidesWithItem(other[, mode=Qt.IntersectsItemShape])#
- 参数:
other –
QGraphicsItem
mode –
ItemSelectionMode
- 返回类型:
布尔值
如果此项与
other
发生碰撞,则返回true
;否则返回false
。将
mode
应用于other
,然后将生成的形状或边界矩形与此项目的形状进行比较。默认值是 Qt::IntersectsItemShape;如果other
与此项目的形状相交、包含或被此项目的形状包含,则表示碰撞(有关详细信息,请参阅 Qt::ItemSelectionMode)。默认实现基于形状交集,并在两个项目上调用
shape()
。由于当形状复杂时,任意形状交集的复杂性会以一个数量级增长,因此此操作可能非常耗时。您可以选择在QGraphicsItem
的子类中重新实现此函数,以提供自定义算法。这允许您利用自己项目的形状中的自然约束来提高碰撞检测的性能。例如,两个未变换的完美圆形项目之间的碰撞可以通过比较它们的位罝和半径来确定。请注意,当重新实现此函数并调用
shape()
或boundingRect()
时,在发生任何交集之前,必须将返回的坐标映射到此项目的坐标系。另请参阅
- collidesWithPath(path[, mode=Qt.IntersectsItemShape])#
- 参数:
path –
QPainterPath
mode –
ItemSelectionMode
- 返回类型:
布尔值
如果此项目与
path
碰撞,则返回true
。碰撞由
mode
确定。默认值是 Qt::IntersectsItemShape;如果path
与此项目的形状相交、包含或被此项目的形状包含,则表示碰撞。请注意,此函数检查项目形状或边界矩形(取决于
mode
)是否在path
内部,而不是检查path
是否在项目形状或边界矩形内。- collidingItems([mode=Qt.IntersectsItemShape])#
- 参数:
mode –
ItemSelectionMode
- 返回类型:
返回与此项发生碰撞的所有项的列表。
碰撞检测的方式由应用
mode
于与此项进行比较的项来决定,即检查每个项的形状或边界矩形,看是否与此项的形状相符。默认值对于mode
是 Qt::IntersectsItemShape。另请参阅
- commonAncestorItem(other)#
- 参数:
other –
QGraphicsItem
- 返回类型:
返回此项和
other
的最近共同祖先项,或者当other
为None
或没有共同祖先时,返回None
。另请参阅
如果此项包含本地坐标中的
point
,则返回true
;否则返回false
。该函数通常从QGraphicsView
调用,以确定光标下的项是什么,因此此函数的实现应尽可能轻量。默认情况下,此函数调用
shape()
,但你可以在子类中重新实现它,以提供(可能更高效)的实现。- contextMenuEvent(event)#
- 参数:
event –
QGraphicsSceneContextMenuEvent
警告
此部分包含从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()) # ...
默认实现在这里是忽略事件。
另请参阅
警告
此部分包含从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 不使用此功能存储数据;它仅提供供用户方便使用。
另请参阅
- deviceTransform(viewportTransform)#
- 参数:
viewportTransform –
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)#
- 参数:
event –
QGraphicsSceneDragDropEvent
警告
此部分包含从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)#
- 参数:
event –
QGraphicsSceneDragDropEvent
该事件处理器可以重新实现以接收对此项的拖动离开事件。当光标离开项目区域时生成拖动离开事件。您通常不需要重新实现此函数,但此函数可以用于在项目中重置状态(例如,突出显示)。
在
event
上调用QEvent::ignore()或QEvent::accept()没有影响。项目默认不接收拖放事件;要启用此功能,请调用
setAcceptDrops(true)
。默认实现不执行任何操作。
- dragMoveEvent(event)#
- 参数:
event –
QGraphicsSceneDragDropEvent
此事件处理器用于处理事件
event
,可以重新实现以接收此项目的拖动移动事件。拖动移动事件会在光标在此项目区域内部移动时生成。通常您不需要重新实现此功能;它用于指示只有项目的部分可以接收拖放。在
event
上调用 QEvent::ignore() 或 QEvent::accept() 可以切换是否在此事件的指定位置接受拖放。默认情况下,event
是接受的,表示项目允许在指定位置进行拖放。项目默认不接收拖放事件;要启用此功能,请调用
setAcceptDrops(true)
。默认实现不执行任何操作。
- dropEvent(event)#
- 参数:
event –
QGraphicsSceneDragDropEvent
此事件处理器用于处理事件
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
查看,则此函数不执行任何操作。另请参阅
- extension(variant)#
- 参数:
变量(variant) – 对象
- 返回类型:
对象
- filtersChildEvents()#
- 返回类型:
布尔值
如果此项目筛选子事件(即,将所有针对其子项的事件发送到此项目),则返回
true
;否则返回false
。默认值为
false
;不筛选子事件。- flags()#
- 返回类型:
返回此项目的标志。标志描述了项目的哪些可配置特性已被启用或禁用。例如,如果标志包括
ItemIsFocusable
,则该项目可以接受输入焦点。默认情况下,没有任何标志被启用。
另请参阅
- focusInEvent(event)#
- 参数:
event –
QFocusEvent
此事件处理器,用于
event
事件,可以被重新实现以接收此项目的焦点获取事件。默认实现调用ensureVisible()
。- focusItem()#
- 返回类型:
如果此项目、该项目的一个子项或后代当前有输入焦点,此函数将返回对该项目的指针。如果没有后代有输入焦点,则返回
None
。- focusOutEvent(event)#
- 参数:
event –
QFocusEvent
此事件处理器,用于
event
事件,可以被重新实现以接收此项目的焦点丢失事件。默认实现不做任何事情。- focusProxy()#
- 返回类型:
返回此项目的焦点代理,如果没有焦点代理则返回
None
。- focusScopeItem()#
- 返回类型:
- 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()#
- 返回类型:
如果此项具有效果,则返回指向该效果的指针;否则返回None。
另请参阅
- group()#
- 返回类型:
返回指向此项所属组的指针,如果此项不是组的成员,则返回None。
- handlesChildEvents()#
- 返回类型:
布尔值
如果此项处理子事件(即,所有针对其子项的事件都被发送到此项),则返回True;否则返回False。
此属性对于项组很有用;它允许一个项代表其子项处理事件,而不是其子项单独处理它们的事件。
默认情况下返回False;子项处理他们自己的事件。对此的例外是,如果项是
QGraphicsItemGroup
,则默认返回True。- hasCursor()#
- 返回类型:
布尔值
如果此项设置了光标,则返回True;否则返回False。
默认情况下,项没有设置任何光标。《cursor()`将会返回一个标准指向箭头光标。
另请参阅
- hasFocus()#
- 返回类型:
布尔值
如果该项目处于活动状态,并且它或其
focusProxy
具有键盘输入焦点,则返回true
;否则,返回false
。- hide()
隐藏项目(项目默认是可见的)。
此便捷函数等同于调用
setVisible(false)
。另请参阅
- hoverEnterEvent(event)
- 参数:
event –
QGraphicsSceneHoverEvent
此事件处理程序,用于处理事件
event
,可以重写以接收此项目的鼠标悬停进入事件。默认实现调用update()
;否则不执行任何操作。在
event
上调用QEvent::ignore()或QEvent::accept()没有影响。- hoverLeaveEvent(event)
- 参数:
event –
QGraphicsSceneHoverEvent
此事件处理程序,用于处理事件
event
,可以重写以接收此项目的鼠标悬停离开事件。默认实现调用update()
;否则不执行任何操作。在
event
上调用QEvent::ignore()或QEvent::accept()没有影响。- hoverMoveEvent(event)#
- 参数:
event –
QGraphicsSceneHoverEvent
此事件处理器,用于处理事件
event
,可以重新实现以接收此项目的悬停移动事件。默认实现不执行任何操作。在
event
上调用QEvent::ignore()或QEvent::accept()没有影响。- inputMethodEvent(event)#
- 参数:
event –
QInputMethodEvent
此事件处理器,用于处理事件
event
,可以重新实现以接收此项目的输入法事件。默认实现忽略该事件。- inputMethodHints()#
- 返回类型:
输入法提示的
InputMethodHint
组合
返回此项目的当前输入法提示。
输入法提示仅与输入项目相关。提示由输入法用于指示其操作方式。例如,如果设置了Qt::ImhNumbersOnly标志,输入法可能会更改其视觉组件以反映只能输入数字。
效果可能因输入法实现而异。
- inputMethodQuery(query)#
- 参数:
query –
InputMethodQuery
- 返回类型:
对象
此方法只与输入对象相关。输入法可以使用它查询对象的属性,以便支持复杂的输入法操作,如对周围文本的支持和再次转换。《code class="docutils literal notranslate">query`指定了查询哪个属性。
- installSceneEventFilter(filterItem)#
- 参数:
filterItem –
QGraphicsItem
警告
此部分包含从C++自动翻译为Python的片段,可能包含错误。
在
filterItem
上为该对象安装一个事件过滤器,使得所有事件在到达该对象之前,都会先通过filterItem
的sceneEventFilter
函数。要过滤其他对象的事件,可以将此对象作为事件过滤器安装在另一个对象上。示例
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)#
- 参数:
child –
QGraphicsItem
- 返回类型:
布尔值
返回
true
如果此项是child
的祖先(即,如果此项是child
的父项,或者是child
父项的祖先之一)。另请参阅
- isBlockedByModalPanel()#
- 返回类型:
(retval, blockingPanel)
如果此项被模态面板阻塞,则返回
true
,否则为false
。如果blockingPanel
不为零,则blockingPanel
将被设置为此项阻塞的模态面板。如果此项没有被阻塞,则此函数不会设置blockingPanel
。此函数对于不在场景中的项始终返回
false
。- isClipped()#
- 返回类型:
布尔值
如果此项被裁剪,则返回
true
。一项被裁剪是因为它已设置了ItemClipsToShape
标志,或者它或其任何祖先已设置了ItemClipsChildrenToShape
标志。裁剪会影响项的外观(即绘制),以及鼠标和悬停事件的传递。
另请参阅
- isEnabled()#
- 返回类型:
布尔值
如果项目已启用,则返回
true
;否则返回 false。另请参阅
这是一个重载的函数。
如果
rect
被上方的任何具有较高 Z 值的项目的非透明形状完全遮挡(即,由具有较高 Z 值的项目),则返回true
。另请参阅
- isObscured(x, y, w, h)
- 参数:
x – float
y – float
宽(w) – float
高(h) – float
- 返回类型:
布尔值
这是一个重载的函数。
此便捷函数等价于调用
isObscured
(QRectF(x
,y
,w
,h
))。- isObscuredBy(item)#
- 参数:
item –
QGraphicsItem
- 返回类型:
布尔值
如果此项目的边界矩形被
item
的非透明形状完全遮挡,则返回true
。基本实现将
item
'sopaqueArea()
映射到此项目的坐标系统,然后检查此项目的boundingRect()
是否完全包含在映射形状中。您可以重写此函数来提供自定义算法,以确定此项目是否被
item
遮挡。另请参阅
- isPanel()#
- 返回类型:
布尔值
如果项目是面板,则返回
true
;否则返回false
。另请参阅
- isSelected()#
- 返回类型:
布尔值
如果此项目被选中,则返回
true
;否则返回 false。在组中的项目继承组的选中状态。
项目默认情况下不选中。
- isUnderMouse()#
- 返回类型:
布尔值
如果该项目当前位于视图中的一个鼠标光标下,则返回
true
;否则返回 false。- isVisible()#
- 返回类型:
布尔值
如果项目可见,则返回
true
;否则返回 false。注意,项目的一般可见性与它是否被
QGraphicsView
实际可视化无关。另请参阅
- isVisibleTo(parent)#
- 参数:
parent –
QGraphicsItem
- 返回类型:
布尔值
如果项目对
parent
可见,则返回true
;否则返回 false。如果parent
为None
,则此函数将返回项目是否对场景可见。即使
isVisible()
为 true,项目也可能对其祖先不可见。即使isVisible()
为 false,项目也可能对其祖先可见。如果有任何祖先被隐藏,项目本身将被隐式隐藏,在这种情况下,此函数将返回 false。另请参阅
- isWidget()#
- 返回类型:
布尔值
如果此项目是一个小部件(即
QGraphicsWidget
),则返回true
;否则返回false
。- isWindow()#
- 返回类型:
布尔值
如果项目是
QGraphicsWidget
窗口,则返回true
,否则返回false。另请参阅
- itemChange(change, value)#
- 参数:
change –
GraphicsItemChange
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
文档以获取详细信息。另请参阅
- itemTransform(other)#
- 参数:
other –
QGraphicsItem
- 返回类型:
(QTransform, bool ok)
返回一个将坐标从当前项映射到
other
的QTransform。如果ok
不为null,并且如果没有这样的转换,则通过ok
指向的布尔值设置为false;否则设置为true。此转换提供了一种替代
mapToItem()
或mapFromItem()
函数的方法,通过返回适当的转换,您可以直接映射形状和坐标。它还有助于您在重复地在两个相同的项之间映射时编写更高效的代码。此事件处理程序用于事件
event
,可以重写以接收本项的按键事件。默认实现会忽略事件。如果您重写了此处理程序,则事件默认会被接受。请注意,只有设置了
ItemIsFocusable
标志并且具有键盘输入焦点的项目才能接收按键事件。此事件处理程序用于事件
event
,可以重写以接收本项的按键释放事件。默认实现会忽略事件。如果您重写了此处理程序,则事件默认会被接受。请注意,只有设置了
ItemIsFocusable
标志并且具有键盘输入焦点的项目才能接收按键事件。- mapFromItem(item, x, y, w, h)#
- 参数:
item –
QGraphicsItem
x – float
y – float
宽(w) – float
高(h) – float
- 返回类型:
此便利函数相当于调用
mapFromItem
(item, QRectF(x, y, w, h))。- mapFromItem(item, x, y)
- 参数:
item –
QGraphicsItem
x – float
y – float
- 返回类型:
这是一个重载的函数。
此便捷函数等价于调用
mapFromItem
(item
, QPointF(x
,y
))。- mapFromItem(item, rect)
- 参数:
item –
QGraphicsItem
矩形(rect) –
QRectF
- 返回类型:
将坐标系统在
item
中的矩形rect
映射到该元素的坐标系统,并作为多边形返回映射后的矩形。如果
item
是None
,此函数返回与mapFromScene()
相同的结果。- mapFromItem(item, point)
- 参数:
item –
QGraphicsItem
point –
QPointF
- 返回类型:
将坐标系统在
item
中的点point
映射到该元素的坐标系统,并返回映射后的坐标。如果
item
是None
,此函数返回与mapFromScene()
相同的结果。- mapFromItem(item, path)
- 参数:
item –
QGraphicsItem
path –
QPainterPath
- 返回类型:
将路径
path
(位于item
的坐标系中)映射到本项的坐标系中,并返回映射后的路径。如果
item
是None
,此函数返回与mapFromScene()
相同的结果。- mapFromItem(item, polygon)
- 参数:
item –
QGraphicsItem
多边形 -
QPolygonF
- 返回类型:
将多边形
polygon
(位于item
的坐标系中)映射到本项的坐标系中,并返回映射后的多边形。如果
item
是None
,此函数返回与mapFromScene()
相同的结果。- mapFromParent(path)#
- 参数:
path –
QPainterPath
- 返回类型:
将路径
path
(位于本项父项的坐标系中)映射到本项的坐标系中,并返回映射后的路径。将点
point
(位于本项父项的坐标系中)映射到本项的坐标系中,并返回映射后的坐标。将此项目父坐标系统中的多边形
polygon
映射到该项目的坐标系统,并返回映射后的多边形。将此项目父坐标系统中的矩形
rect
映射到该项目的坐标系统,并以多边形形式返回映射后的矩形。- mapFromParent(x, y)
- 参数:
x – float
y – float
- 返回类型:
这是一个重载的函数。
此便捷函数等价于调用
mapFromParent
(QPointF(x, y))。- mapFromParent(x, y, w, h)
- 参数:
x – float
y – float
宽(w) – float
高(h) – float
- 返回类型:
此便捷函数等价于调用
mapFromItem
(QRectF(x, y, w, h))。这是一个重载的函数。
此便捷函数等价于调用
mapFromScene
(QPointF(x, y))。- mapFromScene(x, y, w, h)
- 参数:
x – float
y – float
宽(w) – float
高(h) – float
- 返回类型:
此便捷函数等价于调用
mapFromScene
(QRectF(x
,y
,w
,h
))。将矩形
rect
(位于该项场景坐标系中)映射到该项的坐标系中,并返回作为多边形的映射矩形。将多边形
polygon
(位于该项场景坐标系中)映射到该项的坐标系中,并返回映射后的多边形。将点
point
(位于该项场景坐标系中)映射到该项的坐标系中,并返回映射的坐标。- mapFromScene(path)
- 参数:
path –
QPainterPath
- 返回类型:
将路径
path
(位于该项场景坐标系中)映射到该项的坐标系中,并返回映射后的路径。- mapRectFromItem(item, rect)#
- 参数:
item –
QGraphicsItem
矩形(rect) –
QRectF
- 返回类型:
将位于
item
坐标系中的矩形rect
映射到本项的坐标系,并返回映射后的新矩形(即所得多边形的边界矩形)。如果
item
为None
,则此函数将返回与mapRectFromScene()
相同的结果。- mapRectFromItem(item, x, y, w, h)
- 参数:
item –
QGraphicsItem
x – float
y – float
宽(w) – float
高(h) – float
- 返回类型:
此便利函数等同于调用
mapRectFromItem
(item, QRectF(x
,y
,w
,h
))。将位于此项父项坐标系中的矩形
rect
映射到本项的坐标系,并返回映射后的新矩形(即所得多边形的边界矩形)。- mapRectFromParent(x, y, w, h)
- 参数:
x – float
y – float
宽(w) – float
高(h) – float
- 返回类型:
此便捷函数等价于调用
mapRectFromParent
(QRectF(x
,y
,w
,h
))。将场景坐标系中的矩形
rect
映射到该项的坐标系中,并将映射后的矩形作为新矩形返回(即生成的多边形的边界矩形)。- mapRectFromScene(x, y, w, h)
- 参数:
x – float
y – float
宽(w) – float
高(h) – float
- 返回类型:
此便捷函数等价于调用
mapRectFromScene
(QRectF(x
,y
,w
,h
))。- mapRectToItem(item, rect)#
- 参数:
item –
QGraphicsItem
矩形(rect) –
QRectF
- 返回类型:
将此项坐标系中的矩形
rect
映射到item
的坐标系中,并将映射后的矩形作为新矩形返回(即生成多边形的边界矩形)。如果
item
为None
,则此函数返回的结果与mapRectToScene()
相同。- mapRectToItem(item, x, y, w, h)
- 参数:
item –
QGraphicsItem
x – float
y – float
宽(w) – float
高(h) – float
- 返回类型:
此便捷函数等价于调用
mapRectToItem
(item, QRectF(x
,y
,w
,h
))。将此项坐标系中的矩形
rect
映射到其父项的坐标系中,并将映射后的矩形作为新矩形返回(即生成多边形的边界矩形)。- mapRectToParent(x, y, w, h)
- 参数:
x – float
y – float
宽(w) – float
高(h) – float
- 返回类型:
此便捷函数相当于调用
mapRectToParent
(QRectF(x
,y
,w
,h
)).- mapRectToScene(x, y, w, h)
- 参数:
x – float
y – float
宽(w) – float
高(h) – float
- 返回类型:
此便捷函数相当于调用
mapRectToScene
(QRectF(x
,y
,w
,h
)).将矩形
rect
(位于此项的坐标系中)映射到场景坐标系,并返回映射后的新矩形(即结果的边界矩形)。- mapToItem(item, path)
- 参数:
item –
QGraphicsItem
path –
QPainterPath
- 返回类型:
将路径
path
(位于此项的坐标系中)映射到item
的坐标系,并返回映射后的路径。如果
item
为None
,则此函数的返回值与mapToScene()
相同。- mapToItem(item, x, y, w, h)
- 参数:
item –
QGraphicsItem
x – float
y – float
宽(w) – float
高(h) – float
- 返回类型:
此便捷函数相当于调用
mapToItem
(item, QRectF(x
,y
,w
,h
)).- mapToItem(item, x, y)
- 参数:
item –
QGraphicsItem
x – float
y – float
- 返回类型:
这是一个重载的函数。
此便捷函数等同于调用
mapToItem
(item
, QPointF(x
,y
)).- mapToItem(item, polygon)
- 参数:
item –
QGraphicsItem
多边形 -
QPolygonF
- 返回类型:
将坐标系统在此项中的多边形
polygon
映射到item
的坐标系统,并返回映射后的多边形。如果
item
为None
,则此函数的返回值与mapToScene()
相同。- mapToItem(item, rect)
- 参数:
item –
QGraphicsItem
矩形(rect) –
QRectF
- 返回类型:
将坐标系统在此项中的矩形
rect
映射到item
的坐标系统,并返回作为多边形的映射矩形。如果
item
为None
,则此函数的返回值与mapToScene()
相同。- mapToItem(item, point)
- 参数:
item –
QGraphicsItem
point –
QPointF
- 返回类型:
将坐标系统在此项中的点
point
映射到item
的坐标系统,并返回映射后的坐标。如果
item
为None
,则此函数的返回值与mapToScene()
相同。- mapToParent(path)#
- 参数:
path –
QPainterPath
- 返回类型:
将坐标系统在此项中的路径
path
映射到其父项的坐标系统,并返回映射后的路径。如果项没有父项,则path
将映射到场景的坐标系统。将此项目的坐标系中的点
point
映射到父坐标系统中,并返回映射后的坐标。如果该项目没有父级,则point
将映射到场景坐标系。将此项目坐标系中的多边形
polygon
映射到父坐标系统中,并返回映射后的多边形。如果该项目没有父级,则polygon
将映射到场景坐标系。将此项目坐标系中的矩形
rect
映射到父坐标系统中,并返回映射后的矩形作为多边形。如果该项目没有父级,则rect
将映射到场景坐标系。- mapToParent(x, y)
- 参数:
x – float
y – float
- 返回类型:
这是一个重载的函数。
此便捷函数等价于调用
mapToParent
(QPointF(x, y))。- mapToParent(x, y, w, h)
- 参数:
x – float
y – float
宽(w) – float
高(h) – float
- 返回类型:
此便捷函数等价于调用
mapToParent
(QRectF(x, y, w, h))。这是一个重载的函数。
此便捷函数等价于调用
mapToScene
(QPointF(x, y))。- mapToScene(x, y, w, h)
- 参数:
x – float
y – float
宽(w) – float
高(h) – float
- 返回类型:
此便捷函数相当于调用
mapToScene
(QRectF(x
,y
,w
,h
)).将在此项坐标系统中定义的矩形
rect
映射到场景坐标系统,并以多边形的形式返回映射矩形。将在此项坐标系统中定义的多边形
polygon
映射到场景坐标系统,并返回映射的多边形。将在此项坐标系统中定义的点
point
映射到场景坐标系统,并返回映射的坐标。- mapToScene(path)
- 参数:
path –
QPainterPath
- 返回类型:
将在此项坐标系统中定义的路径
path
映射到场景坐标系统,并返回映射的路径。- mouseDoubleClickEvent(event)#
- 参数:
event –
QGraphicsSceneMouseEvent
此事件处理器可以重写以接收此对象的鼠标双击事件。
双击一个项目时,该项目会首先接收到一个鼠标按下事件,然后是释放事件(即单击),接着是双击事件,最后是释放事件。
在
event
上调用QEvent::ignore()或QEvent::accept()没有影响。默认实现调用
mousePressEvent()
。如果您在重新实现此功能时要保留基本实现,请在您的重新实现中调用 QGraphicsItem::mouseDoubleClickEvent() 。请注意,如果一个项目既不是
selectable
也不是movable
(在这种情况下,忽略单次鼠标点击,并且这会阻止产生双击事件)。- mouseMoveEvent(event)#
- 参数:
event –
QGraphicsSceneMouseEvent
此事件处理器用于处理
event
事件,可以被重新实现来接收此项目的鼠标移动事件。如果您接到此事件,可以确定该项目也接收到鼠标按下事件,并且该项目是当前鼠标捕获者。在
event
上调用QEvent::ignore()或QEvent::accept()没有影响。默认实现处理基本的项目交互,如选择和移动。如果您在重新实现此功能时要保留基本实现,请在您的重新实现中调用 QGraphicsItem::mouseMoveEvent() 。
请注意,
mousePressEvent()
决定哪个图形项接收鼠标事件。详见mousePressEvent()
的描述。- mousePressEvent(event)#
- 参数:
event –
QGraphicsSceneMouseEvent
此事件处理程序用于事件
event
,可以重新实现以接收此项目的鼠标按下事件。鼠标按下事件仅发送到按下鼠标按钮的项目。默认情况下,项目接受所有鼠标按钮,但您可以通过调用setAcceptedMouseButtons()
来更改此设置。鼠标按下事件决定哪个项目应该成为鼠标抓取器(请参阅
mouseGrabberItem()
)。如果您不重新实现此函数,则按下事件将传播到该项目的任何最顶层子项,并且不会将其他鼠标事件发送到该项目。如果您重新实现了此函数,
event
默认将被接受(请参阅 QEvent::accept()),然后此项目将成为鼠标抓取器。这允许项目接收未来的移动、释放和双击事件。如果在event
上调用 QEvent::ignore(),则此项目将失去鼠标抓取,并且event
将传播到任何在该项目下方的最顶层项目。除非收到新的鼠标按下事件,否则不会将鼠标事件发送到该项目。默认实现处理基本项目交互,例如选择和移动。如果您在重新实现此函数时想保留基本实现,请在您的重新实现中调用 QGraphicsItem::mousePressEvent()。
对于既不是
movable
也不是selectable
的项目,将忽略event
。- mouseReleaseEvent(event)#
- 参数:
event –
QGraphicsSceneMouseEvent
此事件处理程序用于事件
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()
函数的画家状态。如果项被缓存,即ItemCoordinateCache
或DeviceCoordinateCache
,则有效属性将应用于渲染项的缓存。默认不透明度为 1.0;完全不透明。
- opaqueArea()#
- 返回类型:
此虚拟函数返回一个表示此项目不透明区域的形状。如果一个区域使用不透明画刷或颜色(即不透明)填充,则该区域为不透明。
此函数由
isObscuredBy()
使用,该函数由底层项目调用以确定它们是否被此项目遮挡。默认实现返回一个空的 QPainterPath,表示此项目完全透明,不会遮挡其他任何项目。
- abstract paint(painter, option[, widget=None])#
- 参数:
painter –
QPainter
option –
QStyleOptionGraphicsItem
widget –
QWidget
警告
此部分包含从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()
的文档。- 面板()#
- 返回类型:
返回项目的面板,如果没有面板,则返回 None。如果是面板,将返回自身。否则将返回最近的祖先面板。
另请参阅
返回此项目的模态。
另请参阅
- parentItem()#
- 返回类型:
返回指向该项父项的指针。如果该项没有父项,返回
None
。- parentObject()#
- 返回类型:
返回指向该项父项的指针,将其转换为
QGraphicsObject
类型。如果父项不是QGraphicsObject
类型,则返回None
。另请参阅
- parentWidget()#
- 返回类型:
返回指向该项父小部件的指针。小部件的父项是最靠近的小部件。
另请参阅
返回项在父坐标中的位置。如果项没有父项,其位置以场景坐标给出。
项的位置描述其在父坐标中的位置(局部坐标(0,0));该函数返回与
mapToParent
(0, 0) 相同。为了方便,您还可以调用
scenePos()
以确定无论其父项如何,项在场景坐标中的位置。另请参阅
- prepareGeometryChange()#
警告
此部分包含从C++自动翻译为Python的片段,可能包含错误。
为更改几何形状准备项。在更改项的边界矩形之前调用此函数,以保持
QGraphicsScene
的索引最新。prepareGeometryChange() 如果需要,将调用
update()
。示例
def setRadius(self, newRadius): if radius != newRadius: prepareGeometryChange() radius = newRadius
另请参阅
- removeFromIndex()#
- removeSceneEventFilter(filterItem)#
- 参数:
filterItem –
QGraphicsItem
从
filterItem
中移除此对象的 Evenet 滤波器。- resetTransform()#
将此对象的变换矩阵重置为单位矩阵,或将所有变换属性重置为默认值。此操作相当于调用
setTransform(QTransform())
。- rotation()#
- 返回类型:
浮点
返回绕 Z 轴顺时针旋转的角度(以度为单位)。默认值为 0(即对象未旋转)。
旋转与对象的
scale()
、transform()
和transformations()
结合使用,以便将对象的坐标系映射到父对象。另请参阅
setRotation()
transformOriginPoint()
Transformations
- scale()#
- 返回类型:
浮点
返回对象的缩放因子。默认缩放因子为 1.0(即对象未缩放)。
缩放与对象的
rotation()
、transform()
和transformations()
结合使用,以便将对象的坐标系映射到父对象。另请参阅
setScale()
rotation()
Transformations
- scene()#
- 返回类型:
返回项目的当前场景,如果项目未存储在场景中,则返回
None
。要将项目添加或移动到场景中,请调用
addItem()
。返回该项目在场景坐标中的边界矩形,通过组合
sceneTransform()
与boundingRect()
来实现。另请参阅
这个虚拟函数接收此条目的事件。重新实现此函数以在事件被派送到专门的事件处理程序之前拦截事件。
contextMenuEvent()
,focusInEvent()
,focusOutEvent()
,hoverEnterEvent()
,hoverMoveEvent()
,hoverLeaveEvent()
,keyPressEvent()
,keyReleaseEvent()
,mousePressEvent()
,mouseReleaseEvent()
,mouseMoveEvent()
, 以及mouseDoubleClickEvent()
.如果事件被识别和处理,则返回
true
;否则,返回 false(例如,如果未识别事件类型)。event
是拦截的事件。- sceneEventFilter(watched, event)#
- 参数:
watched –
QGraphicsItem
event -
QEvent
- 返回类型:
布尔值
为
watched
条目过滤事件。event
是过滤的事件。在子类中重写此函数可以使条目作为其他事件过滤器使用,拦截在它们能够响应之前发送给这些条目的所有事件。
重写必须返回 true 以防止对指定事件的进一步处理,确保它不会被发送到被监视的条目,或者返回 false 以指示事件系统应进一步传播该事件。
返回条目在场景坐标中的位置。这与调用
mapToScene(0, 0)
相当。另请参阅
- sceneTransform()#
- 返回类型:
警告
此部分包含从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()
不同,此函数包括元素(及其父元素)的位置,以及所有变换属性。另请参阅
transform()
setTransform()
scenePos()
图形视图坐标系Transformations
- setAcceptDrops(on)#
- 参数:
on – bool
如果
on
为 true,则此元素将接受拖放事件;否则,它对拖放事件是透明的。默认情况下,元素不接受拖放事件。另请参阅
- setAcceptHoverEvents(enabled)#
- 参数:
enabled – bool
如果
enabled
为 true,则此元素将接受悬停事件;否则,它将忽略它们。默认情况下,元素不接受悬停事件。悬停事件在当前没有鼠标捕获元素时传递。当鼠标光标进入一个元素、在其内部移动以及光标离开一个元素时发送。悬停事件通常用于当光标进入时突出显示一个元素,以及跟踪当光标悬停在元素上时的鼠标光标(相当于
mouseTracking
)。父元素在其子元素之前接收悬停进入事件,在其子元素之后接收离开事件。但是,如果光标进入一个子元素,父元素不会接收到悬停离开事件;父元素保持在“悬停”状态,直到光标离开其区域,包括其子元素的区域。
如果父元素处理子元素事件,则当光标穿过其子元素时,它将接收悬停移动、拖动移动和拖放事件,但它不会为子元素接收悬停进入和悬停离开、拖动进入和拖动离开事件。
具有窗口装饰的
QGraphicsWidget
将接受悬停事件,不管acceptHoverEvents()
的值如何。- setAcceptTouchEvents(enabled)#
- 参数:
enabled – bool
如果
enabled
为真,则此项目将接受触摸事件;否则,将忽略它们。默认情况下,项目不接受触摸事件。另请参阅
- 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 设备单元/像素)。设置项目的缓存模式为
mode
。可选的
logicalCacheSize
参数仅在ItemCoordinateCache
模式下使用,它描述了缓存缓冲区的解析度;如果logicalCacheSize
是 (100, 100),则无论项目的逻辑大小如何,QGraphicsItem
都将把项目适配到图形内存中的100x100像素。默认情况下,QGraphicsItem
使用boundingRect()
的大小。对于除了ItemCoordinateCache
之外的所有缓存模式,logicalCacheSize
会被忽略。如果您的项目在重绘时花费了大量时间,缓存可以提高渲染速度。在某些情况下,缓存也可能减慢渲染速度,特别是在项目重绘所用时间少于
QGraphicsItem
从缓存重新绘制时。当启用缓存时,项目的
paint()
函数通常会绘制到一个离屏位图缓存中;对于任何后续的重涂请求,图形视图框架都会从缓存中重绘。这种方法与 QGLWidget 配合得非常好,它将所有缓存都存储为 OpenGL 纹理。请注意,可能需要更改 QPixmapCache 的缓存限制以获得最佳性能。
您可以在
CacheMode
文档中了解有关不同缓存模式的更多信息。注意
启用缓存并不意味着项目的
paint()
函数只有在响应显式的update()
调用时才会被调用。例如,在内存压力下,Qt 可能会决定丢弃一些缓存信息;在这种情况下,即使没有update()
调用,项目的paint()
函数仍然会被调用(即,就像没有启用缓存一样)。警告
此部分包含从C++自动翻译为Python的片段,可能包含错误。
设置项的当前光标形状为
cursor
。当鼠标悬停在该项上时,鼠标光标将采用此形状。请参阅预定义光标对象列表,以查看一系列有用的光标形状。编辑项目可能希望使用 I-beam 光标
item.setCursor(Qt.IBeamCursor)
如果没有设置光标,将使用此项目下项目的光标。
- setData(key, value)#
- 参数:
key – int
value – 对象
将此项的键
key
的自定义数据设置为value
。自定义项数据对于存储任何项的任意属性非常有用。Qt不使用此功能来存储数据;它仅提供给用户以方便。
另请参阅
- setEnabled(enabled)#
- 参数:
enabled – bool
如果
enabled
为真,则该项启用;否则,禁用。禁用项是可见的,但它们不会接收任何事件,也无法获得焦点或被选中。鼠标事件将被丢弃;除非项同时不可见,或者不接收鼠标事件(请参阅
acceptedMouseButtons()
),否则不会传播。禁用项不能成为鼠标捕获者,因此,当捕获鼠标时如果项被禁用,它就像在禁用时有焦点时失去焦点一样,会失去捕获。传统上使用灰化颜色绘制禁用项(请参阅 QPalette::Disabled)。
如果禁用父项,则其所有子项也将被禁用。如果启用父项,则所有子项将被启用,除非它们已被明确禁用(也就是说,如果您在一个子项上调用 setEnabled(false),则即使在父项禁用后再次启用,子项也不会重新启用)。
项默认启用。
- setFiltersChildEvents(enabled)链接到此处
- 参数:
enabled – bool
如果
enabled
为true,则该项目将设置所有子项的过滤器(即,所有 intend for 任何子项的事件都将发送到该项目);否则,如果enabled
为false,则该项目将仅处理自己的事件。默认值是false。另请参阅
- setFlag(flag[, enabled=true])链接到此处
- 参数:
flag –
GraphicsItemFlag
enabled – bool
如果
enabled
为true,则启用项目标志flag
;否则,它被禁用。另请参阅
- setFlags(flags)链接到此处
- 参数:
flags –
GraphicsItemFlag
的组合
将项目标志设置为
flags
。在flags
中启用的所有标志均启用;不在flags
中的所有标志均禁用。如果项目有焦点,并且
flags
没有启用ItemIsFocusable
,则项目会因调用此函数而失去焦点。同样地,如果项目被选中,并且flags
没有启用ItemIsSelectable
,则项目将自动取消选中。默认情况下,没有启用任何标志。(
QGraphicsWidget
默认启用ItemSendsGeometryChanges
标志,以便跟踪位置更改。)- setFocus([focusReason=Qt.OtherFocusReason])#
- 参数:
focusReason –
FocusReason
将键盘输入焦点设置到该元素上。此函数产生的任何焦点事件都将传递
focusReason
参数,它用于解释导致元素获得焦点的原因。只有设置了
ItemIsFocusable
标志的启用元素才能接受键盘焦点。如果该元素不可见、未激活或未与场景关联,则它不会立即获得输入焦点。但是,如果它以后变为可见,它将作为其子元素树中的首选焦点元素登记注册。
调用此函数后,此元素将接收一个带有
focusReason
的focus in event
事件。如果有其他元素已经拥有焦点,则该元素将首先接收一个focus out event
事件,表示它已失去输入焦点。- setFocusProxy(item)#
- 参数:
item –
QGraphicsItem
将元素的焦点代理设置为
item
。如果一个元素拥有焦点代理,那么当元素获得输入焦点时,焦点代理将接收到输入焦点。元素本身仍然拥有焦点(即 at
hasFocus()
将返回true),但只有焦点代理将接收到键盘输入。焦点代理本身可以有自己的焦点代理,并且可以一直这样下去。在这种情况中,键盘输入将由最外层的焦点代理处理。
焦点代理
item
必须属于与该元素相同的场景。- setGraphicsEffect(effect)#
- 参数:
effect –
QGraphicsEffect
将
effect
设置为项目的效果。如果该项目已经安装了效果,QGraphicsItem
将在安装新的effect
之前删除现有效果。您可以通过调用 setGraphicsEffect(None
) 来删除现有效果。如果
effect
是不同项目上的已安装效果,setGraphicsEffect() 将从该项目删除效果并安装到该项目。QGraphicsItem
将获得effect
的所有者权。- setGroup(group)#
- 参数:
group –
QGraphicsItemGroup
将此项目添加到项目组
group
。如果group
为None
,则从当前组中删除该项目,并将其添加为上一组父级的子级。另请参阅
- setHandlesChildEvents(enabled)#
- 参数:
enabled – bool
如果
enabled
为 true,则将此项目设置为处理其所有子项的所有事件(即,任何为任何子项打算的事件都发送到该项目);否则,如果enabled
为 false,则该项目将仅处理自己的事件。默认值为 false。此属性对于项组很有用;它允许一个项代表其子项处理事件,而不是其子项单独处理它们的事件。
如果一个子项接受悬停事件,那么当光标通过子项时,父项将收到悬停移动事件,但不会代表其子项接收到悬停进入和悬停离开事件。
另请参阅
- setInputMethodHints(hints)#
- 参数:
hints –
InputMethodHint
的组合
将此项目的当前输入法提示设置为
hints
。- setOpacity(opacity)#
- 参数:
opacity – float
设置此项目局局长透明度,范围介于0.0(透明)到1.0(不透明)。项目的局部透明度与父和祖代的透明度合并为 PySide6.QtWidgets.QGraphicsItem.effectiveOpacity()。
默认情况下,透明度会从父代传播到子代,因此如果父代的透明度为0.5,而子代也是0.5,则子代的有效透明度将变为0.25。
不透明度属性决定了传递给
paint()
函数的画家状态。如果项被缓存,即ItemCoordinateCache
或DeviceCoordinateCache
,则有效属性将应用于渲染项的缓存。有两个项目标志会影响项目透明度与父代透明度的合并方式:
ItemIgnoresParentOpacity
和ItemDoesntPropagateOpacityToChildren
。注意
将项目透明度设置为0不会使项目消失(根据 PySide6.QtWidgets.QGraphicsItem.isVisible()),但项目将被视为不可见。有关更多信息,请参阅 PySide6.QtWidgets.QGraphicsItem.setVisible() 的说明。
- setPanelModality(panelModality)#
- 参数:
panelModality –
PanelModality
将此项目的模式设置为
panelModality
。更改可见项目的模式将立即生效。
另请参阅
- setParentItem(parent)#
- 参数:
parent –
QGraphicsItem
将此项目的父项目设置为
newParent
。如果此项目已经有父项目,它首先会从之前父项目中删除。如果newParent
为0,则此项目将成为顶级项目。注意,这隐式地将该图形项添加到父级的场景中。您不应自己将项目添加到场景中。
当对
newParent
的祖先项调用此函数时,其行为是未定义的。另请参阅
将项目的位置设置为
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
为空,则清除对象的工具提示。- setTransform(matrix[, combine=false])#
- 参数:
矩阵 –
QTransform
结合 – 布尔值
将项目当前转换矩阵设置为
matrix
.如果
combine
是 true,则matrix
与当前矩阵结合;否则,matrix
替换 当前矩阵。默认情况下,combine
是 false。为了简化使用转换视图与项目交互的过程,
QGraphicsItem
提供了 mapTo... 和 mapFrom... 函数,可以将项目坐标和场景坐标之间进行转换。例如,您可以调用mapToScene()
将项目坐标映射到场景坐标,或调用mapFromScene()
将场景坐标映射到项目坐标。变换矩阵与项目的旋转、缩放和变换组合为一个综合变换,将项目的坐标系映射到其父元素。
另请参阅
transform()
setRotation()
setScale()
setTransformOriginPoint()
图形视图坐标系统Transformations
设置项目坐标中变换的原点。
另请参阅
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()
).- setY(y)#
- 参数:
y – float
设置物品位置的 Y 坐标。相当于调用
setPos
(x()
, y)。- setZValue(z)#
- 参数:
z – float
设置物品的 Z 值为
z
。Z 值决定了同层级(相邻)物品的堆叠顺序。Z 值高的同层级物品将始终绘制在 Z 值低的同层级物品之上。如果恢复 Z 值,物品的插入顺序将决定其堆叠顺序。
Z 值不会以任何方式影响物品的大小。
默认 Z 值为 0。
另请参阅
- shape()#
- 返回类型:
警告
此部分包含从C++自动翻译为Python的片段,可能包含错误。
返回此物品的形状,作为局部坐标中的 QPainterPath。形状用于许多事情,包括碰撞检测、碰撞测试以及
items()
函数。默认实现调用
boundingRect()
返回一个简单的矩形形状,但子类可以重写此函数以返回非矩形物品的更准确的形状。例如,圆形物品可以选择返回椭圆形形状以获得更好的碰撞检测。例如def shape(self): path = QPainterPath() path.addEllipse(boundingRect()) return path
形状的外轮廓可能因绘制时使用的笔的宽度和样式而有所不同。如果您想要包含此轮廓在物品的形状中,您可以使用 QPainterPathStroker 从笔触创建形状。
该函数由
contains()
和collidesWithPath()
的默认实现调用。- show()#
显示项(项默认可见)。
此便捷函数等价于调用
setVisible(true)
。另请参阅
- stackBefore(sibling)#
- 参数:
sibling –
QGraphicsItem
将此项堆叠在
sibling
之前,其中必须是一个兄弟项(即,两项必须具有相同的父项,或者是顶级项)。sibling
必须与此项具有相同的 Z 值,否则调用此函数将没有效果。默认情况下,所有兄弟项都按插入顺序堆叠(即,你添加的第一个项将绘制在添加的下一个项之前)。如果有两个项的 Z 值不同,则具有最高 Z 值的项绘制在顶部。当 Z 值相同时,插入顺序将决定堆叠顺序。
另请参阅
setZValue()
ItemStacksBehindParent
Sorting
- toGraphicsObject()#
- 返回类型:
返回图形项转换为
QGraphicsObject
的结果,如果该类确实是图形对象,否则为 0。- toolTip()#
- 返回类型:
字符串
返回项的提示信息,如果没有设置提示信息,则返回一个空的 QString。
另请参阅
- topLevelItem()#
- 返回类型:
返回此项目的顶层项目。顶层项目是项目最顶层的祖先项目,其父项为
None
。如果一个项目没有父项,则返回其自身的指针(即,顶层项目是其自身的顶层项目)。另请参阅
- topLevelWidget()#
- 返回类型:
返回一个指向项目顶层窗口的指针(即项目的祖先,其父项为
None
,或其父项不是窗口),如果没有顶层窗口,则返回None
。如果项目是其自身的顶层窗口,则该函数返回指向项目的指针。- transform()#
- 返回类型:
返回此项目的转换矩阵。
转换矩阵与项目的
rotation()
、scale()
和transformations()
结合为一个项目的组合转换。默认转换矩阵是一个单位矩阵。
另请参阅
返回项目坐标下的转换原点。
默认为Где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()#
从该项目中清除光标。
另请参阅
安排在此项中由
rect
覆盖的区域的重绘。每当您的项需要重绘时,例如,如果其外观或大小发生变化,都可以调用此函数。此函数不会立即引起绘制;相反,它安排了绘制请求,该请求在控制到达事件循环后由
QGraphicsView
处理。项只有在关联的任何视图中可见时才会重绘。作为该项重绘的副作用,重叠
rect
区域的其他项也可能被重绘。如果该项不可见(即,
isVisible()
返回false
),则此函数不执行任何操作。另请参阅
- update(x, y, width, height)
- 参数:
x – float
y – float
width – 浮点数
height – 浮点数
这是一个重载的函数。
此便捷函数等价于调用update(QRectF(x, y, width, height)).
- updateMicroFocus()#
更新项目的微焦点。
另请参阅
- wheelEvent(event)#
- 参数:
event –
QGraphicsSceneWheelEvent
此事件处理器,对于事件
event
,可以重写以接收此项目的事件。如果你重写此函数,则默认接受event
。如果你忽略事件(例如,通过调用QEvent::ignore()),它将传播到此项目之下的任何项目。如果没有项目接受事件,场景将忽略事件,并将其传播到视图(例如,视图的垂直滚动条)。
默认实现在这里是忽略事件。
另请参阅
- window()#
- 返回类型:
返回项目的窗口,或如果没有此项目有窗口,则返回 None。如果项目是窗口,它将返回自身。否则,它将返回最近的窗口祖先。
另请参阅
isWindow()
- x()#
- 返回类型:
浮点
此便捷函数等价于调用
pos()
.x()。- y()#
- 返回类型:
浮点
此便捷函数等价于调用
pos()
.y()。- zValue()#
- 返回类型:
浮点
返回项目的Z值。Z值影响同级(相邻)项目的堆叠顺序。
默认 Z 值为 0。