PySide6.QtWidgets.QGraphicsView

class QGraphicsView

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

PySide6.QtWidgets.QGraphicsView 的继承图

继承者: QChartView

概要

属性

方法

虚拟方法

插槽

信号

注意

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

详细描述

警告

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

QGraphicsView 在一个可滚动的视口中可视化 QGraphicsScene 的内容。要创建一个包含几何项目的场景,请参阅 QGraphicsScene 的文档。QGraphicsViewGraphics View Framework 的一部分。

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

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

您可以通过使用滚动条或调用centerOn()来显式滚动到场景中的任何位置。通过将一个点传递给centerOn()QGraphicsView将滚动其视口以确保该点在视图中居中。还提供了一个重载用于滚动到QGraphicsItem,在这种情况下,QGraphicsView将确保项目的中心在视图中居中。如果您只想确保某个区域可见(但不一定居中),您可以调用ensureVisible()来代替。

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.AnchorUnderMouse

鼠标下的点用作锚点。

class CacheModeFlag

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

常量

描述

QGraphicsView.CacheNone

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

QGraphicsView.CacheBackground

背景被缓存。这会影响自定义背景以及基于backgroundBrush属性的背景。当启用此标志时,QGraphicsView将分配一个与视口大小相同的像素图。

另请参阅

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的暴露区域抗锯齿自动调整。在其boundingRect()边界上渲染抗锯齿线条的项目可能会在外部渲染部分线条。为了防止渲染伪影,QGraphicsView在所有方向上将所有暴露区域扩展2像素。如果启用此标志,QGraphicsView将不再执行这些调整,从而最小化需要重绘的区域,提高性能。常见的副作用是,使用抗锯齿绘制的项目在移动时可能会在场景中留下绘画痕迹。

QGraphicsView.IndirectPainting

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

注意

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

property alignmentᅟ: Combination of Qt.AlignmentFlag

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

如果整个场景在视图中可见(即没有可见的滚动条),视图的对齐方式将决定场景在视图中的渲染位置。例如,如果对齐方式是默认的Qt::AlignCenter,场景将在视图中居中显示;如果对齐方式是(Qt::AlignLeft | Qt::AlignTop),场景将在视图的左上角渲染。

Access functions:
property backgroundBrushᅟ: QBrush

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

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

默认情况下,此属性包含一个具有 Qt::NoBrush 模式的画笔。

Access functions:
property cacheModeᅟ: Combination of QGraphicsView.CacheModeFlag

警告

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

此属性保存视图的哪些部分被缓存。

QGraphicsView 可以将预渲染的内容缓存在 QPixmap 中,然后绘制到视口上。这种缓存的目的是加快渲染速度较慢的区域的总渲染时间。例如,纹理、渐变和 alpha 混合背景的渲染速度可能会明显较慢;尤其是在视图变换的情况下。CacheBackground 标志启用视图背景的缓存。例如:

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

每次视图转换时,缓存都会失效。然而,在滚动时,只需要部分失效。

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

Access functions:
property dragModeᅟ: QGraphicsView.DragMode

此属性用于控制在按下鼠标左键时在场景上拖动鼠标的行为。

此属性定义了当用户点击场景背景并拖动鼠标时应发生的情况(例如,使用指向手形光标滚动视口内容,或使用橡皮筋选择多个项目)。默认值 NoDrag 不执行任何操作。

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

Access functions:
property foregroundBrushᅟ: QBrush

此属性保存场景的前景笔刷。

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

默认情况下,此属性包含一个具有 Qt::NoBrush 模式的画笔。

Access functions:
property interactiveᅟ: bool

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

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

默认情况下,此属性为 true

Access functions:
property optimizationFlagsᅟ: Combination of QGraphicsView.OptimizationFlag

此属性包含可用于调整QGraphicsView性能的标志。

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

效果因标志而异;详情请参阅OptimizationFlags文档。

默认情况下,没有启用优化标志。

另请参阅

setOptimizationFlag()

Access functions:
property renderHintsᅟ: Combination of QPainter.RenderHint

警告

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

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

这些提示用于在每个可见项目绘制之前初始化QPainter。QPainter使用渲染提示来切换渲染功能,如抗锯齿和平滑的像素图变换。

默认情况下启用了QPainter::TextAntialiasing。

示例:

scene = QGraphicsScene()
scene.addRect(QRectF(-10, -10, 20, 20))
view = QGraphicsView(scene)
view.setRenderHints(QPainter.Antialiasing | QPainter.SmoothPixmapTransform)
view.show()
Access functions:
property resizeAnchorᅟ: QGraphicsView.ViewportAnchor

此属性决定了当视图调整大小时,视图应如何定位场景。

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

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

Access functions:
property rubberBandSelectionModeᅟ: Qt.ItemSelectionMode

此属性用于通过橡皮筋选择矩形选择项目的行为。

此属性定义了在使用RubberBandDrag拖动模式时如何选择项目。

默认值为Qt::IntersectsItemShape;所有形状与橡皮筋相交或被橡皮筋包含的项目都会被选中。

Access functions:
property sceneRectᅟ: QRectF

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

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

如果未设置,或者如果设置了空的QRectF,此属性的值与sceneRect相同,并且它会随着sceneRect的变化而变化。否则,视图的场景矩形不受场景的影响。

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

默认情况下,此属性包含一个位于原点且宽度和高度为零的矩形。

另请参阅

sceneRect

Access functions:
property transformationAnchorᅟ: QGraphicsView.ViewportAnchor

此属性决定了视图在变换过程中应如何定位场景。

QGraphicsView 使用此属性来决定当变换矩阵改变时,如何在视口中定位场景,以及视图的坐标系如何变换。默认行为 AnchorViewCenter 确保在变换期间,视图中心的场景点保持不变(例如,旋转时,场景将围绕视图中心旋转)。

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

另请参阅

alignment resizeAnchor

Access functions:
property viewportUpdateModeᅟ: QGraphicsView.ViewportUpdateMode

此属性决定了视口应如何更新其内容。

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

默认值为MinimalViewportUpdate,其中QGraphicsView在内容更改时将尽可能更新视口的较小区域。

Access functions:
__init__([parent=None])
Parameters:

父级QWidget

构造一个QGraphicsViewparent被传递给QWidget的构造函数。

__init__(scene[, parent=None])
Parameters:

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

alignment()
Return type:

AlignmentFlag 的组合

另请参阅

setAlignment()

属性 alignmentᅟ 的获取器。

backgroundBrush()
Return type:

QBrush

另请参阅

setBackgroundBrush()

属性 backgroundBrushᅟ 的获取器。

cacheMode()
Return type:

CacheModeFlag 的组合

另请参阅

setCacheMode()

属性 cacheModeᅟ 的获取器。

centerOn(item)
Parameters:

项目QGraphicsItem

这是一个重载函数。

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

另请参阅

ensureVisible()

centerOn(pos)
Parameters:

posQPointF

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

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

注意

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

另请参阅

ensureVisible()

centerOn(x, y)
Parameters:
  • x – 浮点数

  • y – 浮点数

这是一个重载函数。

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

dragMode()
Return type:

DragMode

另请参阅

setDragMode()

属性 dragModeᅟ 的获取器。

drawBackground(painter, rect)
Parameters:

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

如果你只想为背景定义颜色、纹理或渐变,你可以调用 setBackgroundBrush() 来代替。

所有的绘画都是在场景坐标中完成的。rect是暴露的矩形。

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

drawForeground(painter, rect)
Parameters:

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

如果你只想为前景定义颜色、纹理或渐变,你可以调用 setForegroundBrush() 来代替。

所有的绘画都是在场景坐标中完成的。rect是暴露的矩形。

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

drawItems(painter, items, options)
Parameters:
  • 画家QPainter

  • itemsQGraphicsItem[]

  • optionsQStyleOptionGraphicsItem[]

在绘制背景之后和前景之前,使用painter在场景中绘制itemsnumItemsitems中的项目数量和options中的选项数量。options是样式选项的列表;每个项目一个。重新实现此函数以提供此视图的自定义项目绘制。

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

自 Qt 4.6 起,除非将 IndirectPainting 标志作为优化标志提供,否则不再调用此函数。

另请参阅

drawForeground() drawBackground() drawItems()

ensureVisible(item[, xmargin=50[, ymargin=50]])
Parameters:

这是一个重载函数。

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

另请参阅

centerOn()

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

  • xmargin – int

  • ymargin – int

滚动视口的内容,使场景矩形 rect 可见,边距由 xmarginymargin 以像素为单位指定。如果无法到达指定的矩形,内容将滚动到最近的有效位置。两个边距的默认值均为50像素。

另请参阅

centerOn()

ensureVisible(x, y, w, h[, xmargin=50[, ymargin=50]])
Parameters:
  • x – 浮点数

  • y – 浮点数

  • w – 浮点数

  • h – 浮点数

  • xmargin – int

  • ymargin – int

这是一个重载函数。

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

fitInView(item[, aspectRadioMode=Qt.IgnoreAspectRatio])
Parameters:

这是一个重载函数。

确保item紧密适应视图内部,根据aspectRatioMode缩放视图。

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

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

此函数保持视图的旋转、平移或剪切。视图根据aspectRatioMode进行缩放。如果rect不能紧密适应,它将在视图中居中显示。

通常会在重新实现的resizeEvent()中调用fitInView(),以确保整个场景或场景的部分在视图大小调整时自动缩放以适应视口的新大小。但请注意,如果在resizeEvent()中调用fitInView(),可能会导致不希望的调整大小递归,如果新的变换切换了滚动条的自动状态。你可以将滚动条策略切换为始终开启或始终关闭以防止这种情况(参见horizontalScrollBarPolicy()verticalScrollBarPolicy())。

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

fitInView(x, y, w, h[, aspectRadioMode=Qt.IgnoreAspectRatio])
Parameters:
  • x – 浮点数

  • y – 浮点数

  • w – 浮点数

  • h – 浮点数

  • aspectRadioModeAspectRatioMode

这是一个重载函数。

这个便捷函数等同于调用 fitInView (QRectF(x, y, w, h), aspectRatioMode)。

foregroundBrush()
Return type:

QBrush

另请参阅

setForegroundBrush()

属性 foregroundBrushᅟ 的获取器。

invalidateScene([rect=QRectF()[, layers=QGraphicsScene.AllLayers]])
Parameters:

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

你可以调用这个函数来通知QGraphicsView场景的背景或前景的变化。它通常用于具有基于瓦片的背景的场景,当QGraphicsView启用了背景缓存时,通知变化。

请注意,QGraphicsView 目前仅支持背景缓存(参见 CacheBackground)。如果传递了除 BackgroundLayer 之外的任何层,此函数等同于调用 update()

另请参阅

invalidate() update()

isInteractive()
Return type:

布尔

属性 interactiveᅟ 的获取器。

isTransformed()
Return type:

布尔

如果视图被转换(即分配了非恒等变换,或调整了滚动条),则返回 true

itemAt(pos)
Parameters:

posQPoint

Return type:

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() 排序

itemAt(x, y)
Parameters:
  • x – 整数

  • y – 整数

Return type:

QGraphicsItem

这是一个重载函数。

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

items()
Return type:

QGraphicsItem的列表

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

另请参阅

items() 排序

items(pos)
Parameters:

posQPoint

Return type:

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() 排序

items(path[, mode=Qt.IntersectsItemShape])
Parameters:
Return type:

QGraphicsItem的列表

这是一个重载函数。

返回一个包含所有项目的列表,这些项目根据mode的不同,要么被path包含,要么与path相交。path是在视口坐标中的。

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

另请参阅

itemAt() items() mapToScene() 排序

items(polygon[, mode=Qt.IntersectsItemShape])
Parameters:
Return type:

QGraphicsItem的列表

这是一个重载函数。

返回一个包含所有项目的列表,这些项目根据mode的不同,要么被polygon包含,要么与polygon相交。polygon是在视口坐标中的。

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

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

另请参阅

itemAt() items() mapToScene() 排序

items(rect[, mode=Qt.IntersectsItemShape])
Parameters:
Return type:

QGraphicsItem的列表

这是一个重载函数。

返回一个包含所有项目的列表,这些项目根据mode的不同,要么被rect包含,要么与rect相交。rect是在视口坐标中的。

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

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

另请参阅

itemAt() items() mapToScene() 排序

items(x, y)
Parameters:
  • x – 整数

  • y – 整数

Return type:

QGraphicsItem的列表

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

items(x, y, w, h[, mode=Qt.IntersectsItemShape])
Parameters:
Return type:

QGraphicsItem的列表

这个便捷函数等同于调用 items(QRectF(x, y, w, h), mode)。

mapFromScene(path)
Parameters:

路径QPainterPath

Return type:

QPainterPath

将场景坐标的绘制路径 path 转换为视口坐标的绘制路径。

另请参阅

mapToScene()

mapFromScene(point)
Parameters:

QPointF

Return type:

QPoint

将场景坐标 point 转换为视口坐标。

另请参阅

mapToScene()

mapFromScene(polygon)
Parameters:

多边形QPolygonF

Return type:

QPolygon

将场景坐标多边形 polygon 转换为视口坐标多边形。

另请参阅

mapToScene()

mapFromScene(rect)
Parameters:

矩形QRectF

Return type:

QPolygon

将场景矩形 rect 转换为视口坐标多边形。

另请参阅

mapToScene()

mapFromScene(x, y)
Parameters:
  • x – 浮点数

  • y – 浮点数

Return type:

QPoint

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

mapFromScene(x, y, w, h)
Parameters:
  • x – 浮点数

  • y – 浮点数

  • w – 浮点数

  • h – 浮点数

Return type:

QPolygon

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

mapToScene(path)
Parameters:

路径QPainterPath

Return type:

QPainterPath

返回映射到场景坐标绘制路径的视口绘制路径 path

另请参阅

mapFromScene()

mapToScene(point)
Parameters:

QPoint

Return type:

QPointF

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

注意:将覆盖像素的整个矩形映射而不是点本身可能很有用。为此,您可以调用 mapToScene (QRect(point, QSize(2, 2)))。

另请参阅

mapFromScene()

mapToScene(polygon)
Parameters:

多边形QPolygon

Return type:

QPolygonF

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

另请参阅

mapFromScene()

mapToScene(rect)
Parameters:

rectQRect

Return type:

QPolygonF

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

另请参阅

mapFromScene()

mapToScene(x, y)
Parameters:
  • x – 整数

  • y – 整数

Return type:

QPointF

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

mapToScene(x, y, w, h)
Parameters:
  • x – 整数

  • y – 整数

  • w – 整数

  • h – 整数

Return type:

QPolygonF

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

optimizationFlags()
Return type:

OptimizationFlag 的组合

另请参阅

setOptimizationFlags()

属性 optimizationFlagsᅟ 的获取器。

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

警告

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

将视图坐标中的source矩形从场景渲染到绘制设备坐标中的target,使用painter。此函数对于将视图内容捕获到绘制设备(例如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()
Return type:

RenderHint的组合

另请参阅

setRenderHints()

属性 renderHintsᅟ 的获取器。

resetCachedContent()

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

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

另请参阅

cacheMode()

resetTransform()

将视图变换重置为单位矩阵。

resizeAnchor()
Return type:

ViewportAnchor

另请参阅

setResizeAnchor()

属性 resizeAnchorᅟ 的获取器。

rotate(angle)
Parameters:

angle – 浮点数

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

rubberBandChanged(viewportRect, fromScenePoint, toScenePoint)
Parameters:

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

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

另请参阅

rubberBandRect()

rubberBandRect()
Return type:

QRect

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

请注意,此QRect的一部分可能位于可视视口之外。例如,它可能包含负值。

rubberBandSelectionMode()
Return type:

ItemSelectionMode

属性 rubberBandSelectionModeᅟ 的获取器。

scale(sx, sy)
Parameters:
  • sx – 浮点数

  • sy – 浮点数

按比例缩放当前视图变换为 (sx, sy)。

scene()
Return type:

QGraphicsScene

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

另请参阅

setScene()

sceneRect()
Return type:

QRectF

另请参阅

setSceneRect()

属性 sceneRectᅟ 的获取器。

setAlignment(alignment)
Parameters:

alignmentAlignmentFlag 的组合

另请参阅

alignment()

属性 alignmentᅟ 的设置器。

setBackgroundBrush(brush)
Parameters:

画笔QBrush

另请参阅

backgroundBrush()

属性 backgroundBrushᅟ 的设置器。

setCacheMode(mode)
Parameters:

modeCacheModeFlag 的组合

另请参阅

cacheMode()

属性 cacheModeᅟ 的设置器。

setDragMode(mode)
Parameters:

modeDragMode

另请参阅

dragMode()

属性 dragModeᅟ 的设置器。

setForegroundBrush(brush)
Parameters:

画笔QBrush

另请参阅

foregroundBrush()

属性 foregroundBrushᅟ 的设置器。

setInteractive(allowed)
Parameters:

allowed – 布尔值

另请参阅

isInteractive()

属性 interactiveᅟ 的设置器。

setOptimizationFlag(flag[, enabled=true])
Parameters:

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

另请参阅

optimizationFlags

setOptimizationFlags(flags)
Parameters:

flagsOptimizationFlag 的组合

另请参阅

optimizationFlags()

属性 optimizationFlagsᅟ 的设置器。

setRenderHint(hint[, enabled=true])
Parameters:

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

另请参阅

renderHints

setRenderHints(hints)
Parameters:

提示RenderHint 的组合

另请参阅

renderHints()

属性 renderHintsᅟ 的设置器。

setResizeAnchor(anchor)
Parameters:

锚点ViewportAnchor

另请参阅

resizeAnchor()

属性 resizeAnchorᅟ 的设置器。

setRubberBandSelectionMode(mode)
Parameters:

modeItemSelectionMode

属性 rubberBandSelectionModeᅟ 的设置器。

setScene(scene)
Parameters:

场景QGraphicsScene

将当前场景设置为scene。如果scene已经在查看中,此函数不执行任何操作。

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

视图不拥有scene的所有权。

另请参阅

scene()

setSceneRect(rect)
Parameters:

矩形QRectF

另请参阅

sceneRect()

属性 sceneRectᅟ 的设置器。

setSceneRect(x, y, w, h)
Parameters:
  • x – 浮点数

  • y – 浮点数

  • w – 浮点数

  • h – 浮点数

setTransform(matrix[, combine=false])
Parameters:

警告

本节包含从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() 将浮点场景坐标映射为视图坐标。

setTransformationAnchor(anchor)
Parameters:

锚点ViewportAnchor

另请参阅

transformationAnchor()

属性 transformationAnchorᅟ 的设置器。

setViewportUpdateMode(mode)
Parameters:

modeViewportUpdateMode

另请参阅

viewportUpdateMode()

属性 viewportUpdateModeᅟ 的设置器。

shear(sh, sv)
Parameters:
  • sh – 浮点数

  • sv – 浮点数

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

transform()
Return type:

QTransform

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

transformationAnchor()
Return type:

ViewportAnchor

属性 transformationAnchorᅟ 的获取器。

translate(dx, dy)
Parameters:
  • dx – 浮点数

  • dy – 浮点数

将当前视图变换平移(dx, dy)。

updateScene(rects)
Parameters:

rects – .QRectF 的列表

安排场景矩形 rects 的更新。

另请参阅

changed()

updateSceneRect(rect)
Parameters:

矩形QRectF

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

viewportTransform()
Return type:

QTransform

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

viewportUpdateMode()
Return type:

ViewportUpdateMode

属性 viewportUpdateModeᅟ 的获取器。