class QGraphicsView#

QGraphicsView 类提供了一个小部件,用于显示 QGraphicsScene 的内容 更多...

Inheritance diagram of PySide6.QtWidgets.QGraphicsView

继承自: QChartView

概述#

属性#

方法#

虚方法#

槽函数#

信号#

注意

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

详细描述#

警告

本节包含自动从C++翻译到Python的代码片段,可能包含错误。

QGraphicsView 可以在可滚动的视口中可视化一个 QGraphicsScene 中的内容。若要创建包含几何图形的对象的场景,请参阅 QGraphicsScene 的文档。《QGraphicsView》 是 Graphics View Framework 的一部分。

要可视化场景,首先创建一个 QGraphicsView 对象,并将您想要可视化的场景的地址传递给 QGraphicsView 构造函数。或者,您可以在稍后通过调用 setScene() 来设置场景。在调用 show() 之后,视图将默认滚动到场景中心,并显示在此点可见的任何项目。例如

scene = QGraphicsScene()
scene.addText("Hello, world!")
view = QGraphicsView(scene)
view.show()

您可以使用滚动条或调用 centerOn() 明确滚动到场景上的任何位置。通过传递一个点到 centerOn()QGraphicsView 将滚动其视口以确保该点位于视图的中心。还提供了一个重载函数,用于滚动到 QGraphicsItem 的位置,此时 QGraphicsView 将确保项目的中心位于视图的中心。如果您只想确保某个区域可见(但不一定在视图中心),则可以调用 ensureVisible() 而不是 centerOn()

QGraphicsView可以用来可视化整个场景或其部分。默认情况下,当视图首次显示时(通过调用itemsBoundingRect()),可视区域会自动检测。要自己设置可视区域矩形,可以调用setSceneRect()。这将适当地调整滚动条的取值范围。请注意,尽管场景支持近乎无限的尺寸,但滚动条的取值范围决不会超过整数范围(INT_MIN,INT_MAX)。

QGraphicsView通过调用render()来可视化场景。默认情况下,项目使用常规的QPainter绘制到视口,并使用默认的绘制提示。要改变将默认绘制提示传递给QGraphicsView在绘制项目时传递给QPainter的提示,可以调用setRenderHints()

默认情况下,QGraphicsView提供了一个常规的QWidget作为视口小部件。您可以通过调用viewport()来访问这个小部件,或者可以通过调用setViewport()来替换它。要使用OpenGL进行渲染,只需调用setViewport(new QOpenGLWidget)。QGraphicsView将拥有视口小部件的所有权。

QGraphicsView支持仿射变换,使用 QTransform。您可以选择传递一个矩阵给setTransform(),或者调用以下便利函数之一:rotate()scale()translate()shear()。最常见的两种变换是缩放,用于实现缩放,以及旋转。QGraphicsView在变换过程中保持视图的中心固定。由于视图对齐(使用setAlignment()),变换视图不会有视觉上的影响。

您可以通过鼠标和键盘与场景中的项目进行交互。QGraphicsView将鼠标和按键事件转换为场景事件(继承自QGraphicsSceneEvent的事件),并将它们传递到可视化的场景中。最终,是各个项目处理事件并对它们做出反应。例如,如果您点击一个可选项目,该项目通常会让场景知道它已被选中,并重新绘制自己以显示选择矩形。同样,如果您点击并拖动鼠标来移动可移动的项目,处理鼠标移动的是项目本身。项交互默认启用,您可以通过调用setInteractive()来切换。

您还可以通过创建一个 QGraphicsView 的子类,并重写鼠标和键盘事件处理程序来提供自己的自定义场景交互。为了简化您以编程方式与视图中的项目交互,QGraphicsView 提供了映射函数 mapToScene()mapFromScene(),以及项目访问器 items()itemAt()。这些函数允许您在视图坐标和场景坐标之间映射点、矩形、多边形和路径,并使用视图坐标在场景中找到项目。

当使用 QOpenGLWidget 作为视口时,支持立体渲染。这是使用与 QOpenGLWidget::paintGL 相同的模式完成的。要启用它,启用 QSurfaceFormat::StereoBuffers 标志。由于内部处理标志的方式,在创建窗口之前使用 QSurfaceFormat::setDefaultFormat() 全局设置 QSurfaceFormat::StereoBuffers 标志。如果启用了该标志且有硬件支持立体渲染,则 drawBackground()drawForeground() 将在每个帧中触发两次。调用 QOpenGLWidget::currentTargetBuffer() 以查询正在绘制的缓冲区。

../../_images/graphicsview-view.png

注意

使用 OpenGL 视口限制了对 QGraphicsProxyWidget 的使用。并非所有的小部件和样式的组合都可以在这种设置下支持。您应仔细测试您的用户界面并进行必要的调整。

class ViewportAnchor#

此枚举描述了 QGraphicsView 在用户调整视图大小或视图变换时可以使用的可能锚点。

常数

描述

QGraphicsView.NoAnchor

无锚点,即视图保持场景位置不变。

QGraphicsView.AnchorViewCenter

视图中心处的场景点用作锚点。

QGraphicsView establishesAnchorUnderMouse

鼠标下方的点作为锚点。

class CacheModeFlag#

(继承于 enum.Flag) 此枚举描述了可以为 QGraphicsView 的缓存模式设置的标志。

常数

描述

QGraphicsView.CacheNone

所有绘画都直接在视口上完成。

QGraphicsView.CacheBackground

背景被缓存。这会影响自定义背景和基于 backgroundBrush 属性的背景。当此标志启用时,QGraphicsView 将分配一个完整大小的视口的 pixmap。

另请参阅

cacheMode

class DragMode#

此枚举描述了在视口中按下并拖动鼠标时的默认操作。

常数

描述

QGraphicsView.NoDrag

无动作;忽略鼠标事件。

QGraphicsView.ScrollHandDrag

光标变为指针手,拖动鼠标将滚动滚动条。此模式在交互和非交互模式下都有效。

QGraphicsView.RubberBandDrag

会出现一个橡皮筋。拖动鼠标将设置橡皮筋的几何形状,且橡皮筋覆盖的所有项目都会被选中。此模式对于非交互视图是禁用的。

class ViewportUpdateMode#

此枚举描述了当场景内容改变或暴露时,QGraphicsView 如何更新其视口的显示。

常数

描述

QGraphicsView.FullViewportUpdate

当时刻改变或重新暴露场景的任何可见部分时,QGraphicsView 将更新整个视口。当 QGraphicsView 花费的时间用于确定绘制内容的时间比实际绘图的时间更长时(例如,当非常多的项目需要反复更新时),此方法是最快的。这是不支持部分更新的视口(例如 QOpenGLWidget)和需要禁用滚动优化的视口的首选更新模式。

QGraphicsView.MinimalViewportUpdate

QGraphicsView 将确定需要重绘的最小视口区域,通过避免重绘未更改的区域,最小化绘制时间。这是 QGraphicsView 的默认模式。尽管这种方法通常提供最好的性能,但如果场景中有很多小的可见变化,QGraphicsView 可能会花费更多的时间来寻找最小方法,而不是花费在绘制上的时间。

QGraphicsView.SmartViewportUpdate

QGraphicsView 将尝试通过分析需要重绘的区域来找到最佳更新模式。

QGraphicsView.BoundingRectViewportUpdate

视图区域内所有更改的边界矩形将被重绘。这种模式的优势在于 QGraphicsView 只在一个区域内搜索更改,最小化确定需要重绘的时间。缺点是未更改的区域也需要重绘。

QGraphicsView.NoViewportUpdate

QGraphicsView 在场景发生变化时永远不会更新其视口;预期用户控制所有更新。此模式禁用了 QGraphicsView 中的所有(可能缓慢)项目可见性测试,适用于需要固定帧率或视口由外部更新的场景。

另请参阅

viewportUpdateMode

class OptimizationFlag#

(继承自 enum.Flag) 此枚举描述了可用于提高 QGraphicsView 渲染性能的标志。默认情况下,未设置任何标志。请注意,设置标志通常会产生副作用,且这种效应在不同的画布设备和平台之间可能不同。

常数

描述

QGraphicsView.DontSavePainterState

在渲染时,QGraphicsView 在渲染背景或前景、以及渲染每个项目时保护绘制器状态(参见 QPainter::save())。这允许您在更改绘制器状态后保持其状态不变(即,您可以在绘制后无需恢复状态的情况下调用 QPainter::setPen() 或 QPainter::setBrush())。然而,如果项目始终保持恢复状态,则应启用此标志,以防止 QGraphicsView 也这样做。

QGraphicsView.DontAdjustForAntialiasing

QGraphicsView.IndirectPainting

自Qt 4.6以来,恢复旧绘图算法,该算法调用QGraphicsView::drawItems()和QGraphicsScene::drawItems()。仅用于与旧代码的兼容性。

注意

可以在使用from __feature__ import true_property时直接使用属性,否则通过访问函数。

属性alignment: Qt.AlignmentFlag的组合#

此属性在整个场景在视图中可见时保存场景在视图中的对齐方式。

如果在视图中可以看到整个场景(例如,没有可见的滚动条),那么视图的居中对齐将决定场景在哪里被绘制在视图中。例如,如果居中对齐是Qt::AlignCenter(默认值),则场景将在视图中居中,如果是Qt::AlignLeft | Qt::AlignTop,则场景将在视图中绘制在左上角。

访问函数
属性backgroundBrush: QBrush#

此属性保存场景的背景画刷。

此属性设置此视图中场景的背景画刷。它用于覆盖场景自身的背景,并定义了drawBackground()的行为。要为此视图提供自定义的背景绘制,可以重写drawBackground()

默认情况下,此属性包含具有Qt::NoBrush图案的画刷。

另请参阅

backgroundBrush

访问函数
属性 cacheMode: QGraphicsView.CacheModeFlag 的组合#

警告

本节包含自动从C++翻译到Python的代码片段,可能包含错误。

此属性持有视图哪些部分被缓存。

QGraphicsView可以在QPixmap中以预渲染的内容进行缓存,然后绘制到视图中。这种缓存的目的是加快慢速渲染区域的总渲染时间。例如,纹理、渐变和alpha混合背景等渲染较慢;特别是在变换视图时。启用CacheBackground标志将启用视图背景的缓存。例如

view = QGraphicsView()
view.setBackgroundBrush(QImage(":/images/backgroundtile.png"))
view.setCacheMode(QGraphicsView.CacheBackground)

每当视图进行变换时,缓存将失效。然而,在滚动时,只需要部分无效化。

默认情况下,不缓存任何内容。

访问函数
属性 dragMode: QGraphicsView.DragMode#

此属性记录在按下左鼠标按钮的同时,拖动鼠标在场景上的行为。

此属性定义当用户在场景背景上单击并拖动鼠标时应发生什么(例如,使用指向手光标滚动视图内容或使用橡皮筋选择多个项)。默认值NoDrag什么也不做。

此行为仅影响任何项目未处理的鼠标点击。您可以通过创建一个QGraphicsView子类并重新实现mouseMoveEvent()来定义自定义行为。

访问函数
属性 foregroundBrush: QBrush#

此属性持有场景的前景刷。

此属性设置本视图场景的前景刷。它用于覆盖场景自己的前景,并定义drawForeground()的行为。为此视图提供自定义前景绘制,您可以重新实现drawForeground()

默认情况下,此属性包含具有Qt::NoBrush图案的画刷。

访问函数
属性interactive: 布尔值#

该属性表示视图是否允许场景交互。

如果启用,此视图将允许场景交互。否则,此视图将不允许交互,并将忽略任何鼠标或键盘事件(即,它将作为只读视图操作)。

默认情况下,此属性值为 true

访问函数
属性optimizationFlags: QGraphicsView.OptimizationFlag的组合#

该属性保存可用来调整 QGraphicsView 性能的标志。

QGraphicsView 使用裁剪、额外的边界矩形调整和其他某些辅助工具来提高常见图形场景的渲染质量和性能。然而,根据目标平台、场景和使用视口的不同,这些操作可能会降低性能。

效果因标志而异;有关详细信息,请参阅 OptimizationFlags 文档。

默认情况下,未启用任何优化标志。

另请参阅

setOptimizationFlag()

访问函数
属性renderHints: QPainter.RenderHint的组合#

警告

本节包含自动从C++翻译到Python的代码片段,可能包含错误。

该属性保存视图的默认渲染提示。

这些提示用于在绘制每个可见项目之前初始化 QPainter。Q Painter 使用渲染提示切换渲染功能,例如抗锯齿和光滑位图变换。

默认启用 QPainter::TextAntialiasing。

示例

scene = QGraphicsScene()
scene.addRect(QRectF(-10, -10, 20, 20))
view = QGraphicsView(scene)
view.setRenderHints(QPainter.Antialiasing | QPainter.SmoothPixmapTransform)
view.show()
访问函数
属性resizeAnchor: QGraphicsView.ViewportAnchor#

此属性表示当视图大小调整时视图应如何定位场景。

QGraphicsView 使用此属性来决定在视口部件的大小改变时如何在视口中定位场景。默认行为 NoAnchor 在调整大小时保持场景位置不变;视图的左上角在调整大小时将显得固定。

请注意,当只有场景的一部分可见(即存在滚动条时)时,此属性的效果才会明显。否则,如果整个场景都适合在视图中显示,则 QGraphicsScene 将使用视图的 alignment 来定位场景。

访问函数
property rubberBandSelectionModeᅟ: Qt.ItemSelectionMode#

此属性保留使用橡皮带选择矩形选择项的行为。

此属性确定在 RubberBandDrag 拖动模式下选择项的方式。

默认值是 Qt::IntersectsItemShape;所有与橡皮带相交或包含橡皮带的形状都被选中。

访问函数
property sceneRectᅟ: QRectF#

此属性保留此视图可视化的场景区域。

场景矩形定义了场景的范围,在视图的情况下,这意味着可以使用滚动条导航的场景区域。

如果没有设置,或设置了一个空值,则此属性具有与 sceneRect 相同的值,并且它会随着 sceneRect 而改变。否则,视图的场景矩形不受场景的影响。

请注意,尽管场景支持几乎无限的大小,但滚动条的范围内绝不会超过整数范围(INT_MIN,INT_MAX)。当场景大于滚动条的值时,您可以选择使用 translate() 函数来浏览场景。

默认情况下,该属性包含一个原点处的矩形,其宽度和高度为零。

另请参阅

sceneRect

访问函数
property transformationAnchor : QGraphicsView.ViewportAnchor#

此属性包含如何在变换期间定位场景。

QGraphicsView 使用此属性来决定在变换矩阵更改和视图坐标系发生变换时如何在视图中定位场景。默认行为为 AnchorViewCenter,确保在变换过程中视图中心的场景点保持不变(例如,旋转时,场景将看起来围绕视图中心旋转)。

请注意,当只有场景的一部分可见(即存在滚动条时)时,此属性的效果才会明显。否则,如果整个场景都适合在视图中显示,则 QGraphicsScene 将使用视图的 alignment 来定位场景。

另请参阅

resizeAnchor

访问函数
property viewportUpdateMode : QGraphicsView.ViewportUpdateMode#

此属性包含视口如何更新其内容。

QGraphicsView 使用此属性来决定如何更新重新暴露或更改的场景区域。通常您不需要修改此属性,但在某些情况下,这样做可以提高渲染性能。请参阅 ViewportUpdateMode 的文档以获取具体细节。

默认值是 MinimalViewportUpdate,其中 QGraphicsView 将尽可能小的更新区域更新到视口中。

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

父类QWidget

构建一个 QGraphicsView。将 parent 传递给 QWidget 的构造函数。

__init__(scene[, parent=None])
参数::

构建一个 QGraphicsView 并将可视化的场景设置为 scene。将 parent 传递给 QWidget 的构造函数。

alignment()#
返回类型:

AlignmentFlag 的组合

另请参阅

setAlignment()

属性 alignment 的获取器。

backgroundBrush()#
返回类型:

QBrush

另请参阅

setBackgroundBrush()

属性 backgroundBrush 的获取器。

cacheMode()#
返回类型:

CacheModeFlag 的组合

另请参阅

setCacheMode()

属性 cacheMode 的获取器。

centerOn(item)#
参数::

itemQGraphicsItem

这是一个重载的函数。

滚动视口的内容以确保 item 在视图中居中。

另请参阅

ensureVisible()

centerOn(pos)
参数::

posQPointF

滚动视口的内容以确保场景坐标 pos 在视图中居中。

因为 pos 是一个浮点坐标,而滚动条操作的是整数坐标,所以居中仅是一个近似值。

注意

如果项目靠近或超出边界,则它在视图中将可见,但不会居中。

另请参阅

ensureVisible()

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

  • y – float

这是一个重载的函数。

此函数提供方便使用。它等价于调用 centerOn (QPointF(x, y))。

dragMode()
返回类型:

拖动模式

另请参阅

setDragMode()

属性 dragMode 的获取器。

drawBackground(painter, rect)
参数::

使用 painter 在绘制任何项目和前景之前绘制场景的背景。重新实现此函数可为此视图提供自定义背景。

如果您只想定义背景的颜色、纹理或渐变,请改用 setBackgroundBrush()

所有绘画都使用 场景 坐标进行。 rect 是暴露的矩形。

默认实现使用视图的 backgroundBrush 填充 rect。如果没有定义此类画刷(默认情况),则调用场景的 drawBackground() 函数代替。

drawForeground(painter, rect)
参数::

使用 painter 绘制场景的前景,在背景和所有项目绘制之后。重新实现此函数可以为此视图提供自定义前景。

如果您只需要定义前景的颜色、纹理或渐变,可以调用 setForegroundBrush() 方法。

所有绘画都使用 场景 坐标进行。 rect 是暴露的矩形。

默认实现使用视图的 foregroundBrush 填充 rect。如果没有定义这样的画刷(默认情况),则调用场景的 drawForeground() 函数。

drawItems(painter, items, options)#
参数::
  • painterQPainter

  • itemsQGraphicsItem[]

  • optionsQStyleOptionGraphicsItem[]

在背景和前景绘制之后,使用 painter 绘制场景中的 items,其中 options 是每个项的风格选项列表。重写此函数以提供对此视图的项自定义绘制。numItemsitemsoptions 中的项数。

默认实现调用场景的 drawItems() 函数。

从 Qt 4.6 开始,除非作为优化标志给出了 IndirectPainting,否则此函数不再被调用。

另请参阅

drawForeground() drawBackground() drawItems()

ensureVisible(item[, xmargin=50[, ymargin=50]])#
参数::

这是一个重载的函数。

使视口的内容滚动,以便项 item 的中心可见,使用 xmarginymargin 指定的像素作为边距。如果无法达到指定的点,则将内容滚动到最近的有效位置。两个边距的默认值均为 50 像素。

另请参阅

centerOn()

ensureVisible(rect[, xmargin=50[, ymargin=50]])
参数::
  • rectQRectF

  • xmargin – int

  • ymargin – int

将视口的内容滚动,使得场景矩形 rect 可见,并通过 xmarginymargin 指定的像素值来设置边距。如果指定的矩形无法到达,则内容被滚动到最近的合法位置。两个边距的默认值都是 50 像素。

另请参阅

centerOn()

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

  • y – float

  • 宽度 – 浮点型

  • 高度 – 浮点型

  • xmargin – int

  • ymargin – int

这是一个重载的函数。

此函数提供了方便。它等同于调用 ensureVisible (QRectF(x, y, w, h), xmargin, ymargin).

fitInView(item[, aspectRadioMode=Qt.IgnoreAspectRatio])#
参数::

这是一个重载的函数。

确保 item 严格适应视图内部,并根据 aspectRatioMode 放缩视图。

fitInView(rect[, aspectRadioMode=Qt.IgnoreAspectRatio])
参数::

调整视图矩阵和滚动条,确保场景矩形 rect 可以适应视图窗口。必须将 rect 放置在场景矩形内部;否则,fitInView() 无法保证整个矩形都可见。

此函数保持视图的旋转、平移或剪切。视图会根据 aspectRatioMode 进行缩放。如果矩形不严格适应视野,则会将矩形居中。

在重写 resizeEvent() 时调用 fitInView() 是常见的做法,以确保整个场景或场景的一部分能够自动缩放以适应视口的新尺寸。但请注意,如果在 resizeEvent() 里面调用 fitInView(),则可能会导致不想要的尺寸递归,如果新的转换切换了滚动条的自动状态。你可以切换滚动条策略,使其始终开启或始终关闭,以防止这种情况(请参阅 horizontalScrollBarPolicy()verticalScrollBarPolicy() )。

如果 rect 为空或视口太小,此函数将不执行任何操作。

fitInView(x, y, w, h[, aspectRadioMode=Qt.IgnoreAspectRatio])
参数::
  • x – float

  • y – float

  • 宽度 – 浮点型

  • 高度 – 浮点型

  • 纵横比模式AspectRatioMode

这是一个重载的函数。

此便利函数等价于调用 fitInView (QRectF(x, y, w, h), aspectRatioMode).

foregroundBrush()#
返回类型:

QBrush

另请参阅

setForegroundBrush()

属性 foregroundBrushᅟ 的获取器。

invalidateScene([rect=QRectF()[, layers=QGraphicsScene.AllLayers]])#
参数::

使 rect 中的 layers 无效,并安排重新绘制。 rect 在场景坐标中。在 rect 内的 layers 的任何缓存内容都将无条件地使无效并重新绘制。

您可以使用此函数来通知QGraphicsView 场景的背景或前景发生变化。它通常用于具有基于瓦片的背景的场景,并在QGraphicsView 启用背景缓存时通知变化。

请注意,QGraphicsView 当前仅支持背景缓存(请参见CacheBackground)。如果传入任何但不是BackgroundLayer 的层,则此函数与调用update() 相当。

另请参阅

invalidate() update()

isInteractive()#
返回类型:

bool

属性interactiveᅟ 的获取器。

isTransformed()#
返回类型:

bool

如果视图已变换(即分配了非单位变换,或调整了滚动条),则返回true

itemAt(pos)#
参数::

posQPoint

返回类型:

QGraphicsItem

警告

本节包含自动从C++翻译到Python的代码片段,可能包含错误。

返回位于位置 pos 的项,该位置在视口坐标中。如果此位置有多个项,则此函数返回最顶部的项。

示例

def mousePressEvent(self, event):

    if QGraphicsItem item = itemAt(event.pos()):
        print("You clicked on item", item)
    else:
        qDebug("You didn't click on an item.")

另请参阅

items() Sorting

itemAt(x, y)
参数::
  • x – int

  • y – int

返回类型:

QGraphicsItem

这是一个重载的函数。

此函数提供方便。它与调用itemAt (QPoint(x, y)) 相等。

items(x, y, w, h[, mode=Qt.IntersectsItemShape])#
参数::
返回类型:

. QGraphicsItem 列表

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

items(x, y)
参数::
  • x – int

  • y – int

返回类型:

. QGraphicsItem 列表

此函数仅供参考。它与调用items(QPoint(x, y))等效。

items(rect[, mode=Qt.IntersectsItemShape])
参数::
返回类型:

. QGraphicsItem 列表

这是一个重载的函数。

根据mode的值,返回所有与rect内或与其相交的项的列表。rect是在视口坐标中的。

mode的默认值是Qt::IntersectsItemShape;返回所有与其精确形状相交或被rect包含的项。

项按降序堆叠顺序排序(即,返回列表中的第一个项是最上面的项)。

另请参阅

itemAt() items() mapToScene() 排序

items(polygon[, mode=Qt.IntersectsItemShape])
参数::
返回类型:

. QGraphicsItem 列表

这是一个重载的函数。

根据mode返回所有项的列表,这些项根据polygon是否存在或相交于polygon。其中polygon位于视图坐标中。

mode的默认值是Qt::IntersectsItemShape;所有与polygon形状相交或被其包含的项都将返回。

项按降序堆叠顺序排序(即,返回列表中的第一个项是最顶层项)。

另请参阅

itemAt() items() mapToScene() 排序

items(pos)
参数::

posQPoint

返回类型:

. QGraphicsItem 列表

警告

本节包含自动从C++翻译到Python的代码片段,可能包含错误。

在视图中pos位置的所有项的列表。项按降序堆叠顺序列出(即,列表中的第一个项是最顶层项,最后一个项是最底层项)。pos位于视口坐标中。

此函数通常在QGraphicsView的子类中作为鼠标事件处理器的调用,pos在未转换的视口坐标中,就像QMouseEvent::pos()一样。

def mousePressEvent(self, event):

    print("There are", items(event.pos()).size())
             << "items at position" << mapToScene(event.pos())

另请参阅

items() Sorting

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

. QGraphicsItem 列表

这是一个重载的函数。

根据mode返回所有项的列表,这些项根据path是否存在或相交于pathpath位于视图坐标中。

mode的默认值是Qt::IntersectsItemShape;所有与path形状相交或被其包含的项都将返回。

另请参阅

itemAt() items() mapToScene() 排序

items()
返回类型:

. QGraphicsItem 列表

返回关联场景中的所有项的列表,按降序堆叠顺序排序(即,返回列表中的第一个项是最顶层项)。

另请参阅

items() Sorting

mapFromScene(path)#
参数::

pathQPainterPath

返回类型:

QPainterPath

返回场景坐标的painter路径path到视图坐标的painter路径。

另请参阅

mapToScene()

mapFromScene(point)
参数::

pointQPointF

返回类型:

QPoint

将场景坐标的点point返回到视口坐标。

另请参阅

mapToScene()

mapFromScene(polygon)
参数::

多边形QPolygonF

返回类型:

QPolygon

返回场景坐标多边形 polygon 到视口坐标多边形。

另请参阅

mapToScene()

mapFromScene(rect)
参数::

rectQRectF

返回类型:

QPolygon

返回场景矩形 rect 到视口坐标多边形。

另请参阅

mapToScene()

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

  • y – float

返回类型:

QPoint

此函数提供方便。它等同于调用 mapFromScene (QPointF(x, y)).

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

  • y – float

  • 宽度 – 浮点型

  • 高度 – 浮点型

返回类型:

QPolygon

此函数提供方便。它等同于调用 mapFromScene (QRectF(x, y, w, h)).

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

  • y – int

  • w – int

  • h – int

返回类型:

QPolygonF

此函数提供方便。它等同于调用 mapToScene (QRect(x, y, w, h)).

mapToScene(x, y)
参数::
  • x – int

  • y – int

返回类型:

QPointF

此函数提供方便。它等同于调用 mapToScene (QPoint(x, y)).

mapToScene(rect)
参数::

rectQRect

返回类型:

QPolygonF

返回视口矩形 rect 映射到场景坐标多边形。

另请参阅

mapFromScene()

mapToScene(point)
参数::

QPoint

返回类型:

QPointF

返回将视口坐标 point 映射到场景坐标的点。

注意:将位于 point 处的像素覆盖的整个矩形映射到场景坐标,可能比映射点本身更有用。为此,您可以调用mapToScene(QRect(point, QSize(2, 2))).

另请参阅

mapFromScene()

mapToScene(polygon)
参数::

polygonQPolygon

返回类型:

QPolygonF

返回将视口多边形 polygon 映射到场景坐标多边形的函数。

另请参阅

mapFromScene()

mapToScene(path)
参数::

pathQPainterPath

返回类型:

QPainterPath

返回将视口画家路径 path 映射到场景坐标画家路径的函数。

另请参阅

mapFromScene()

optimizationFlags()#
返回类型:

OptimizationFlag 的组合

另请参阅

setOptimizationFlags()

属性 optimizationFlagsᅟ 的获取器。

render(painter[, target=QRectF()[, source=QRect()[, aspectRatioMode=Qt.KeepAspectRatio]]])#
参数::

警告

本节包含自动从C++翻译到Python的代码片段,可能包含错误。

使用 painter 将场景中的源矩形 source(视图坐标)渲染到目标矩形 target(绘图设备坐标)。此函数对于将视图内容捕获到绘图设备上非常有用,例如在 QImage 上(例如,用于截图),或者用于打印到 QPrinter。例如

scene = QGraphicsScene()
scene.addItem(...
...
view = QGraphicsView(scene)
view.show()
...
printer = QPrinter(QPrinter.HighResolution)
printer.setPageSize(QPrinter.A4)
painter = QPainter(printer)
# print, fitting the viewport contents into a full page
view.render(painter)
# print the upper half of the viewport into the lower.
# half of the page.
viewport = view.viewport().rect()
view.render(painter,
            QRectF(0, printer.height() / 2,
                   printer.width(), printer.height() / 2),
            viewport.adjusted(0, 0, 0, -viewport.height() / 2))

如果 source 是空矩形,此函数将使用 viewport() -> rect() 来确定绘制的内容。如果 target 是空矩形,将使用 painter 的绘图设备的完整尺寸(例如,对于 QPrinter,页面大小)。

根据 aspectRatioMode 对源矩形的内容进行变换,以适合目标矩形。默认情况下,保持纵横比,并将 source 缩放以适应 target

另请参阅

render()

renderHints()#
返回类型:

RenderHint 的组合

另请参阅

setRenderHints()

获取属性 renderHintsᅟ 的获取器。

resetCachedContent()#

重置任何缓存的内容。调用此函数将清除 QGraphicsView 的缓存。如果当前的缓存模式是 CacheNone ,此函数将不执行任何操作。

backgroundBrushbackgroundBrush 属性改变时,会自动调用此函数;您只需在重新实现了 drawBackground()drawBackground() 来绘制自定义背景,并需要触发完全重绘时,才需要调用此函数。

另请参阅

cacheMode()

resetTransform()#

将视图变换重置为恒等矩阵。

resizeAnchor()#
返回类型:

视图锚点

另请参阅

setResizeAnchor()

获取属性 resizeAnchorᅟ 的获取器。

rotate(angle)#
参数::

angle – float

将当前视图变换逆时针旋转 angle 度。

rubberBandChanged(viewportRect, fromScenePoint, toScenePoint)#
参数::

当橡皮带矩形发生变化时,会发出此信号。视图矩形由 rubberBandRect 指定。拖动开始位置和拖动结束位置以场景点形式提供,分别在 fromScenePointtoScenePoint 中。

当橡皮带选择结束时,此信号将以空值发出。

另请参阅

rubberBandRect()

rubberBandRect()#
返回类型:

QRect

此函数返回当前橡皮带区域(在视图坐标中),如果用户目前正在使用橡皮带进行项目选择。当用户未使用橡皮带时,此函数返回(一个空值)QRectF()。

注意,此QRect的某部分可能超出可视视图。例如,它可以包含负值。

rubberBandSelectionMode()#
返回类型:

ItemSelectionMode

属性 rubberBandSelectionMode 的获取器。

scale(sx, sy)#
参数::
  • sx – float

  • sy – float

sxsy 缩放当前视图变换。

scene()#
返回类型:

QGraphicsScene

返回当前视图中可视化场景的指针。如果没有正在可视化的场景,则返回 None

另请参阅

setScene()

sceneRect()#
返回类型:

QRectF

另请参阅

setSceneRect()

属性 sceneRect 的获取器。

setAlignment(alignment)#
参数::

alignmentAlignmentFlag 的组合

另请参阅

alignment()

属性 alignment 的设置器。

setBackgroundBrush(brush)#
参数::

brushQBrush

另请参阅

backgroundBrush()

属性 backgroundBrush 的设置器。

setCacheMode(mode)#
参数::

modeCacheModeFlag 的组合

另请参阅

cacheMode()

属性 cacheMode 的设置器。

setDragMode(mode)#
参数::

modeDragMode

另请参阅

dragMode()

属性 dragMode 的设置器。

setForegroundBrush(brush)#
参数::

brushQBrush

另请参阅

foregroundBrush()

属性 foregroundBrush 的设置器。

setInteractive(allowed)#
参数::

allowed – bool

另请参阅

isInteractive()

属性 interactive 的设置器。

setOptimizationFlag(flag[, enabled=true])#
参数::

如果 enabled 为 true,则启用 flag;否则禁用 flag

另请参阅

optimizationFlags

setOptimizationFlags(flags)#
参数::

flagsOptimizationFlag 的组合

另请参阅

optimizationFlags()

属性 optimizationFlags 的设置器。

setRenderHint(hint[, enabled=true])#
参数::

如果 enabled 为 true,则启用渲染提示 hint;否则禁用。

另请参阅

renderHints

setRenderHints(hints)#
参数::

hintsRenderHint 的组合

另请参阅

renderHints()

属性 renderHints 的设置器。

setResizeAnchor(anchor)#
参数::

锚点ViewportAnchor

另请参阅

resizeAnchor()

属性 resizeAnchorᅟ 的设置器。

setRubberBandSelectionMode(mode)#
参数::

modeItemSelectionMode

属性 rubberBandSelectionModeᅟ 的设置器。

setScene(scene)#
参数::

sceneQGraphicsScene

将当前场景设置为 scene。如果 scene 已经被查看,则此函数不做任何操作。

当一个场景被设置在视图中时,信号 changed() 将自动连接到此视图的 updateScene() 插槽,并且视图的滚动条会调整以适应场景的大小。

视图不对 scene 持有所有权。

另请参阅

scene()

setSceneRect(rect)#
参数::

rectQRectF

另请参阅

sceneRect()

属性 sceneRectᅟ 的设置器。

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

  • y – float

  • 宽度 – 浮点型

  • 高度 – 浮点型

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

警告

本节包含自动从C++翻译到Python的代码片段,可能包含错误。

将视图的当前变换矩阵设置为 matrix

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

变换矩阵将场景转换成视图坐标。使用默认的变换,由单位矩阵提供,一个像素在视图中代表一个场景单位(例如,一个 10x10 的矩形项目在视图中使用 10x10 像素绘制)。如果应用了 2x2 缩放矩阵,场景将以 1:2 的比例绘制(例如,一个 10x10 的矩形项目在视图中使用 20x20 像素绘制)。

示例

scene = QGraphicsScene()
scene.addText("GraphicsView rotated clockwise")
view = QGraphicsView(scene)
view.rotate(90) # the text is rendered with a 90 degree clockwise rotation
view.show()

为了简化通过变换视图与项目交互,QGraphicsView 提供了 mapTo… 和 mapFrom… 函数,可以转换场景和视图坐标。例如,您可以调用 mapToScene() 将视图坐标映射到浮点场景坐标,或者调用 mapFromScene() 从浮点场景坐标映射到视图坐标。

另请参阅

translate()

setTransformationAnchor(anchor)#
参数::

锚点ViewportAnchor

另请参阅

transformationAnchor()

属性 transformationAnchor 的设置器。

setViewportUpdateMode(mode)#
参数::

modeViewportUpdateMode

另请参阅

viewportUpdateMode()

属性 viewportUpdateMode 的设置器。

shear(sh, sv)#
参数::
  • sh – float

  • sv – float

通过 (sh, sv) 对当前视图变换进行剪切。

transform()#
返回类型:

QTransform

返回视图当前的变换矩阵。如果没有设置当前的变换,则返回单位矩阵。

transformationAnchor()#
返回类型:

视图锚点

属性 transformationAnchor属性 的获取器。

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

  • dy – float

通过 (dx, dy) 调整当前视图变换。

updateScene(rects)#
参数::

rects – .list of QRectF

安排更新场景矩形 rects

另请参阅

changed()

updateSceneRect(rect)#
参数::

rectQRectF

通知 QGraphicsView 场景的视图框已经更改。 rect 是新的场景视图框。如果视图已经具有明确设置的视图框,则此函数不执行任何操作。

viewportTransform()#
返回类型:

QTransform

返回将场景坐标映射到视口坐标的矩阵。

viewportUpdateMode()#
返回类型:

ViewportUpdateMode

该属性的获取器 viewportUpdateModeᅟ .