- class QGraphicsView#
QGraphicsView
类提供了一个小部件,用于显示QGraphicsScene
的内容 更多...继承自:
QChartView
概述#
属性#
alignment
- 当整个场景可见时,场景在视图中的对齐方式backgroundBrush
- 场景的背景画刷cacheMode
- 视图哪些部分被缓存dragMode
- 当按住左键鼠标在场景上拖动时的行为foregroundBrush
- 场景的前景画刷interactive
- 视图是否允许场景交互optimizationFlags - 可用于调整 QGraphicsView 性能的标志
renderHints
- 视图默认的渲染提示resizeAnchor
- 视图调整大小时,如何定位场景rubberBandSelectionMode
- 使用橡皮带选择矩形选择项目的行为sceneRect
- 由这个视图可视化的场景区域transformationAnchor
- 视图在变换期间如何定位场景viewportUpdateMode
- 视口如何更新其内容
方法#
def
__init__()
def
alignment()
def
cacheMode()
def
centerOn()
def
dragMode()
def
ensureVisible()
def
fitInView()
def
isInteractive()
def
isTransformed()
def
itemAt()
def
items()
def
mapFromScene()
def
mapToScene()
定义
render()
定义
rotate()
定义
scale()
定义
scene()
定义
sceneRect()
定义
setScene()
定义
shear()
定义
transform()
定义
translate()
虚方法#
定义
drawItems()
槽函数#
信号#
注意
此文档可能包含自动从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() 以查询正在绘制的缓冲区。注意
使用 OpenGL 视口限制了对
QGraphicsProxyWidget
的使用。并非所有的小部件和样式的组合都可以在这种设置下支持。您应仔细测试您的用户界面并进行必要的调整。- class ViewportAnchor#
此枚举描述了
QGraphicsView
在用户调整视图大小或视图变换时可以使用的可能锚点。常数
描述
QGraphicsView.NoAnchor
无锚点,即视图保持场景位置不变。
QGraphicsView.AnchorViewCenter
视图中心处的场景点用作锚点。
QGraphicsView establishesAnchorUnderMouse
鼠标下方的点作为锚点。
- class CacheModeFlag#
(继承于
enum.Flag
) 此枚举描述了可以为QGraphicsView
的缓存模式设置的标志。常数
描述
QGraphicsView.CacheNone
所有绘画都直接在视口上完成。
QGraphicsView.CacheBackground
背景被缓存。这会影响自定义背景和基于 backgroundBrush 属性的背景。当此标志启用时,
QGraphicsView
将分配一个完整大小的视口的 pixmap。另请参阅
- 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
中的所有(可能缓慢)项目可见性测试,适用于需要固定帧率或视口由外部更新的场景。另请参阅
- 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,则场景将在视图中绘制在左上角。
此属性保存场景的背景画刷。
此属性设置此视图中场景的背景画刷。它用于覆盖场景自身的背景,并定义了drawBackground()的行为。要为此视图提供自定义的背景绘制,可以重写drawBackground()。
默认情况下,此属性包含具有Qt::NoBrush图案的画刷。
另请参阅
- 属性 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()
来定义自定义行为。- 访问函数
此属性持有场景的前景刷。
此属性设置本视图场景的前景刷。它用于覆盖场景自己的前景,并定义
drawForeground()
的行为。为此视图提供自定义前景绘制,您可以重新实现drawForeground()
。默认情况下,此属性包含具有Qt::NoBrush图案的画刷。
- 属性interactive: 布尔值#
该属性表示视图是否允许场景交互。
如果启用,此视图将允许场景交互。否则,此视图将不允许交互,并将忽略任何鼠标或键盘事件(即,它将作为只读视图操作)。
默认情况下,此属性值为
true
。- 属性optimizationFlags: QGraphicsView.OptimizationFlag的组合#
该属性保存可用来调整
QGraphicsView
性能的标志。QGraphicsView
使用裁剪、额外的边界矩形调整和其他某些辅助工具来提高常见图形场景的渲染质量和性能。然而,根据目标平台、场景和使用视口的不同,这些操作可能会降低性能。效果因标志而异;有关详细信息,请参阅
OptimizationFlags
文档。默认情况下,未启用任何优化标志。
- 属性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;所有与橡皮带相交或包含橡皮带的形状都被选中。
此属性保留此视图可视化的场景区域。
场景矩形定义了场景的范围,在视图的情况下,这意味着可以使用滚动条导航的场景区域。
如果没有设置,或设置了一个空值,则此属性具有与
sceneRect
相同的值,并且它会随着sceneRect
而改变。否则,视图的场景矩形不受场景的影响。请注意,尽管场景支持几乎无限的大小,但滚动条的范围内绝不会超过整数范围(INT_MIN,INT_MAX)。当场景大于滚动条的值时,您可以选择使用
translate()
函数来浏览场景。默认情况下,该属性包含一个原点处的矩形,其宽度和高度为零。
另请参阅
- property transformationAnchor : QGraphicsView.ViewportAnchor#
此属性包含如何在变换期间定位场景。
QGraphicsView
使用此属性来决定在变换矩阵更改和视图坐标系发生变换时如何在视图中定位场景。默认行为为AnchorViewCenter
,确保在变换过程中视图中心的场景点保持不变(例如,旋转时,场景将看起来围绕视图中心旋转)。请注意,当只有场景的一部分可见(即存在滚动条时)时,此属性的效果才会明显。否则,如果整个场景都适合在视图中显示,则
QGraphicsScene
将使用视图的 alignment 来定位场景。另请参阅
- property viewportUpdateMode : QGraphicsView.ViewportUpdateMode#
此属性包含视口如何更新其内容。
QGraphicsView
使用此属性来决定如何更新重新暴露或更改的场景区域。通常您不需要修改此属性,但在某些情况下,这样做可以提高渲染性能。请参阅ViewportUpdateMode
的文档以获取具体细节。默认值是
MinimalViewportUpdate
,其中QGraphicsView
将尽可能小的更新区域更新到视口中。构建一个
QGraphicsView
。将parent
传递给QWidget
的构造函数。- __init__(scene[, parent=None])
- 参数::
scene –
QGraphicsScene
父类 –
QWidget
构建一个
QGraphicsView
并将可视化的场景设置为scene
。将parent
传递给QWidget
的构造函数。- alignment()#
- 返回类型:
AlignmentFlag
的组合
另请参阅
属性
alignment
的获取器。- backgroundBrush()#
- 返回类型:
另请参阅
属性
backgroundBrush
的获取器。- cacheMode()#
- 返回类型:
CacheModeFlag
的组合
另请参阅
属性
cacheMode
的获取器。- centerOn(item)#
- 参数::
item –
QGraphicsItem
这是一个重载的函数。
滚动视口的内容以确保
item
在视图中居中。另请参阅
- centerOn(pos)
- 参数::
pos –
QPointF
滚动视口的内容以确保场景坐标
pos
在视图中居中。因为
pos
是一个浮点坐标,而滚动条操作的是整数坐标,所以居中仅是一个近似值。- centerOn(x, y)
- 参数::
x – float
y – float
这是一个重载的函数。
此函数提供方便使用。它等价于调用
centerOn
(QPointF(x
,y
))。属性
dragMode
的获取器。使用
painter
在绘制任何项目和前景之前绘制场景的背景。重新实现此函数可为此视图提供自定义背景。如果您只想定义背景的颜色、纹理或渐变,请改用
setBackgroundBrush()
。所有绘画都使用 场景 坐标进行。
rect
是暴露的矩形。默认实现使用视图的
backgroundBrush
填充rect
。如果没有定义此类画刷(默认情况),则调用场景的 drawBackground() 函数代替。使用
painter
绘制场景的前景,在背景和所有项目绘制之后。重新实现此函数可以为此视图提供自定义前景。如果您只需要定义前景的颜色、纹理或渐变,可以调用
setForegroundBrush()
方法。所有绘画都使用 场景 坐标进行。
rect
是暴露的矩形。默认实现使用视图的
foregroundBrush
填充rect
。如果没有定义这样的画刷(默认情况),则调用场景的 drawForeground() 函数。- drawItems(painter, items, options)#
- 参数::
painter –
QPainter
items –
QGraphicsItem[]
options –
QStyleOptionGraphicsItem[]
在背景和前景绘制之后,使用
painter
绘制场景中的items
,其中options
是每个项的风格选项列表。重写此函数以提供对此视图的项自定义绘制。numItems
是items
和options
中的项数。默认实现调用场景的 drawItems() 函数。
从 Qt 4.6 开始,除非作为优化标志给出了
IndirectPainting
,否则此函数不再被调用。另请参阅
drawForeground()
drawBackground()
drawItems()
- ensureVisible(item[, xmargin=50[, ymargin=50]])#
- 参数::
item –
QGraphicsItem
xmargin – int
ymargin – int
这是一个重载的函数。
使视口的内容滚动,以便项
item
的中心可见,使用xmargin
和ymargin
指定的像素作为边距。如果无法达到指定的点,则将内容滚动到最近的有效位置。两个边距的默认值均为 50 像素。另请参阅
- ensureVisible(rect[, xmargin=50[, ymargin=50]])
- 参数::
rect –
QRectF
xmargin – int
ymargin – int
将视口的内容滚动,使得场景矩形
rect
可见,并通过xmargin
和ymargin
指定的像素值来设置边距。如果指定的矩形无法到达,则内容被滚动到最近的合法位置。两个边距的默认值都是 50 像素。另请参阅
- 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 –
QGraphicsItem
纵横比模式 –
AspectRatioMode
这是一个重载的函数。
确保
item
严格适应视图内部,并根据aspectRatioMode
放缩视图。- fitInView(rect[, aspectRadioMode=Qt.IgnoreAspectRatio])
- 参数::
rect –
QRectF
纵横比模式 –
AspectRatioMode
调整视图矩阵和滚动条,确保场景矩形
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()#
- 返回类型:
另请参阅
属性
foregroundBrushᅟ
的获取器。- invalidateScene([rect=QRectF()[, layers=QGraphicsScene.AllLayers]])#
- 参数::
rect –
QRectF
layers –
SceneLayer
的组合
使
rect
中的layers
无效,并安排重新绘制。rect
在场景坐标中。在rect
内的layers
的任何缓存内容都将无条件地使无效并重新绘制。您可以使用此函数来通知
QGraphicsView
场景的背景或前景发生变化。它通常用于具有基于瓦片的背景的场景,并在QGraphicsView
启用背景缓存时通知变化。请注意,
QGraphicsView
当前仅支持背景缓存(请参见CacheBackground
)。如果传入任何但不是BackgroundLayer
的层,则此函数与调用update()
相当。另请参阅
invalidate()
update()
- isInteractive()#
- 返回类型:
bool
属性
interactiveᅟ
的获取器。- isTransformed()#
- 返回类型:
bool
如果视图已变换(即分配了非单位变换,或调整了滚动条),则返回
true
。警告
本节包含自动从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
- 返回类型:
这是一个重载的函数。
此函数提供方便。它与调用
itemAt
(QPoint(x
,y
)) 相等。- items(x, y, w, h[, mode=Qt.IntersectsItemShape])#
- 参数::
x – int
y – int
w – int
h – int
mode –
ItemSelectionMode
- 返回类型:
. 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])
- 参数::
rect –
QRect
mode –
ItemSelectionMode
- 返回类型:
. QGraphicsItem 列表
这是一个重载的函数。
根据
mode
的值,返回所有与rect
内或与其相交的项的列表。rect
是在视口坐标中的。mode
的默认值是Qt::IntersectsItemShape;返回所有与其精确形状相交或被rect
包含的项。项按降序堆叠顺序排序(即,返回列表中的第一个项是最上面的项)。
另请参阅
- items(polygon[, mode=Qt.IntersectsItemShape])
- 参数::
polygon –
QPolygon
mode –
ItemSelectionMode
- 返回类型:
. QGraphicsItem 列表
这是一个重载的函数。
根据
mode
返回所有项的列表,这些项根据polygon
是否存在或相交于polygon
。其中polygon
位于视图坐标中。mode
的默认值是Qt::IntersectsItemShape;所有与polygon
形状相交或被其包含的项都将返回。项按降序堆叠顺序排序(即,返回列表中的第一个项是最顶层项)。
另请参阅
- items(pos)
- 参数::
pos –
QPoint
- 返回类型:
. 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])
- 参数::
path –
QPainterPath
mode –
ItemSelectionMode
- 返回类型:
. QGraphicsItem 列表
这是一个重载的函数。
根据
mode
返回所有项的列表,这些项根据path
是否存在或相交于path
。path
位于视图坐标中。mode
的默认值是Qt::IntersectsItemShape;所有与path
形状相交或被其包含的项都将返回。另请参阅
- items()
- 返回类型:
. QGraphicsItem 列表
返回关联场景中的所有项的列表,按降序堆叠顺序排序(即,返回列表中的第一个项是最顶层项)。
另请参阅
items()
Sorting
- mapFromScene(path)#
- 参数::
path –
QPainterPath
- 返回类型:
返回场景坐标的painter路径
path
到视图坐标的painter路径。另请参阅
将场景坐标的点
point
返回到视口坐标。另请参阅
返回场景坐标多边形
polygon
到视口坐标多边形。另请参阅
返回场景矩形
rect
到视口坐标多边形。另请参阅
- mapFromScene(x, y)
- 参数::
x – float
y – float
- 返回类型:
此函数提供方便。它等同于调用
mapFromScene
(QPointF(x
,y
)).- mapFromScene(x, y, w, h)
- 参数::
x – float
y – float
宽度 – 浮点型
高度 – 浮点型
- 返回类型:
此函数提供方便。它等同于调用
mapFromScene
(QRectF(x
,y
,w
,h
)).此函数提供方便。它等同于调用
mapToScene
(QRect(x
,y
,w
,h
)).- mapToScene(x, y)
- 参数::
x – int
y – int
- 返回类型:
此函数提供方便。它等同于调用
mapToScene
(QPoint(x
,y
)).返回视口矩形
rect
映射到场景坐标多边形。另请参阅
返回将视口坐标
point
映射到场景坐标的点。注意:将位于
point
处的像素覆盖的整个矩形映射到场景坐标,可能比映射点本身更有用。为此,您可以调用mapToScene(QRect(point
, QSize(2, 2))).另请参阅
返回将视口多边形
polygon
映射到场景坐标多边形的函数。另请参阅
- mapToScene(path)
- 参数::
path –
QPainterPath
- 返回类型:
返回将视口画家路径
path
映射到场景坐标画家路径的函数。另请参阅
- optimizationFlags()#
- 返回类型:
OptimizationFlag
的组合
属性
optimizationFlagsᅟ
的获取器。- render(painter[, target=QRectF()[, source=QRect()[, aspectRatioMode=Qt.KeepAspectRatio]]])#
- 参数::
painter –
QPainter
target –
QRectF
source –
QRect
aspectRatioMode –
AspectRatioMode
警告
本节包含自动从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
。另请参阅
- renderHints()#
- 返回类型:
RenderHint
的组合
另请参阅
获取属性
renderHintsᅟ
的获取器。- resetCachedContent()#
重置任何缓存的内容。调用此函数将清除
QGraphicsView
的缓存。如果当前的缓存模式是CacheNone
,此函数将不执行任何操作。当
backgroundBrush
或backgroundBrush
属性改变时,会自动调用此函数;您只需在重新实现了drawBackground()
或drawBackground()
来绘制自定义背景,并需要触发完全重绘时,才需要调用此函数。另请参阅
- resetTransform()#
将视图变换重置为恒等矩阵。
- resizeAnchor()#
- 返回类型:
另请参阅
获取属性
resizeAnchorᅟ
的获取器。- rotate(angle)#
- 参数::
angle – float
将当前视图变换逆时针旋转
angle
度。- rubberBandChanged(viewportRect, fromScenePoint, toScenePoint)#
当橡皮带矩形发生变化时,会发出此信号。视图矩形由
rubberBandRect
指定。拖动开始位置和拖动结束位置以场景点形式提供,分别在fromScenePoint
和toScenePoint
中。当橡皮带选择结束时,此信号将以空值发出。
另请参阅
此函数返回当前橡皮带区域(在视图坐标中),如果用户目前正在使用橡皮带进行项目选择。当用户未使用橡皮带时,此函数返回(一个空值)QRectF()。
注意,此QRect的某部分可能超出可视视图。例如,它可以包含负值。
- rubberBandSelectionMode()#
- 返回类型:
属性
rubberBandSelectionMode
的获取器。- scale(sx, sy)#
- 参数::
sx – float
sy – float
按
sx
和sy
缩放当前视图变换。- scene()#
- 返回类型:
返回当前视图中可视化场景的指针。如果没有正在可视化的场景,则返回
None
。另请参阅
- sceneRect()#
- 返回类型:
另请参阅
属性
sceneRect
的获取器。- setAlignment(alignment)#
- 参数::
alignment –
AlignmentFlag
的组合
另请参阅
属性
alignment
的设置器。属性
backgroundBrush
的设置器。- setCacheMode(mode)#
- 参数::
mode –
CacheModeFlag
的组合
另请参阅
属性
cacheMode
的设置器。属性
dragMode
的设置器。属性
foregroundBrush
的设置器。- setInteractive(allowed)#
- 参数::
allowed – bool
另请参阅
属性
interactive
的设置器。- setOptimizationFlag(flag[, enabled=true])#
- 参数::
flag –
OptimizationFlag
enabled – bool
如果
enabled
为 true,则启用flag
;否则禁用flag
。另请参阅
- setOptimizationFlags(flags)#
- 参数::
flags –
OptimizationFlag
的组合
另请参阅
属性
optimizationFlags
的设置器。- setRenderHint(hint[, enabled=true])#
- 参数::
hint –
RenderHint
enabled – bool
如果
enabled
为 true,则启用渲染提示hint
;否则禁用。另请参阅
- setRenderHints(hints)#
- 参数::
hints –
RenderHint
的组合
另请参阅
属性
renderHints
的设置器。- setResizeAnchor(anchor)#
- 参数::
锚点 –
ViewportAnchor
另请参阅
属性
resizeAnchorᅟ
的设置器。- setRubberBandSelectionMode(mode)#
- 参数::
mode –
ItemSelectionMode
属性
rubberBandSelectionModeᅟ
的设置器。- setScene(scene)#
- 参数::
scene –
QGraphicsScene
将当前场景设置为
scene
。如果scene
已经被查看,则此函数不做任何操作。当一个场景被设置在视图中时,信号
changed()
将自动连接到此视图的updateScene()
插槽,并且视图的滚动条会调整以适应场景的大小。视图不对
scene
持有所有权。另请参阅
属性
sceneRectᅟ
的设置器。- setSceneRect(x, y, w, h)
- 参数::
x – float
y – float
宽度 – 浮点型
高度 – 浮点型
- setTransform(matrix[, combine=false])#
- 参数::
矩阵 –
QTransform
combine – bool
警告
本节包含自动从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
的设置器。- setViewportUpdateMode(mode)#
- 参数::
mode –
ViewportUpdateMode
另请参阅
属性
viewportUpdateMode
的设置器。- shear(sh, sv)#
- 参数::
sh – float
sv – float
通过 (
sh
,sv
) 对当前视图变换进行剪切。- transform()#
- 返回类型:
返回视图当前的变换矩阵。如果没有设置当前的变换,则返回单位矩阵。
属性
transformationAnchor属性
的获取器。- translate(dx, dy)#
- 参数::
dx – float
dy – float
通过 (
dx
,dy
) 调整当前视图变换。- updateScene(rects)#
- 参数::
rects – .list of QRectF
安排更新场景矩形
rects
。另请参阅
通知
QGraphicsView
场景的视图框已经更改。rect
是新的场景视图框。如果视图已经具有明确设置的视图框,则此函数不执行任何操作。- viewportTransform()#
- 返回类型:
返回将场景坐标映射到视口坐标的矩阵。
- viewportUpdateMode()#
- 返回类型:
该属性的获取器
viewportUpdateModeᅟ
.