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