百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

QGraphicsView使用手册(qgraphicsview实例)

toyiye 2024-08-21 01:42 3 浏览 0 评论

详细说明

QGraphicsView 类提供了一个用于显示 QGraphicsScene 内容的窗口。

QGraphicsView 在可滚动视口中可视化 QGraphicsScene 的内容。 要创建具有几何项的场景,请参阅 QGraphicsScene 的文档。 QGraphicsView 是图形视图框架的一部分。

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

QGraphicsScene scene;
scene.addText("Hello, world!");

QGraphicsView view(&scene);
view.show();

您可以使用滚动条或通过调用 centerOn() 显式滚动到场景中的任何位置。 通过将一个点传递给 centerOn(),QGraphicsView 将滚动其视口以确保该点在视图中居中。 如果您只想确保某个区域可见(但不一定居中),则可以调用 ensureVisible() 代替。

QGraphicsView 可用于可视化整个场景,或仅可视化其中的一部分。 默认情况下,在第一次显示视图时会自动检测可视化区域(通过调用 QGraphicsScene::itemsBoundingRect())。 要自己设置可视化区域矩形,可以调用 setSceneRect()。 这将适当地调整滚动条的范围。 请注意,尽管场景支持几乎无限大小,但滚动条的范围永远不会超过整数范围(INT_MIN ,INT_MAX)。

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

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

QGraphicsView 支持仿射变换(使用 QTransform)。 您可以将矩阵传递给 setTransform(),也可以调用rotate()、scale()、translate() 或shear()之一。 最常见的两种变换是缩放,用于实现缩放和旋转。 QGraphicsView 在转换过程中保持视图的中心固定。 由于场景对齐(setAligment()),平移视图不会有视觉影响。

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

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

另见 QGraphicsScene、QGraphicsItem 和 QGraphicsSceneEvent。

成员类型

enum QGraphicsView::CacheModeFlag
flags QGraphicsView::CacheMode

这个枚举描述了你可以为 QGraphicsView 的缓存模式设置的标志。

CacheMode 类型是QFlags<CacheModeFlag> 的 typedef。 它存储 CacheModeFlag 值的 OR 组合。

另请参阅 cacheMode.。

enum QGraphicsView::DragMode

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

另见 dragMode QGraphicsScene::setSelectionArea()。

enum QGraphicsView::OptimizationFlag
flags QGraphicsView::OptimizationFlags

此枚举描述了您可以启用以提高 QGraphicsView 中的渲染性能的标志。 默认情况下,没有设置这些标志。 请注意,设置标志通常会产生副作用,这种效果可能因绘制设备和平台而异。

这个枚举是在 Qt 4.3 中引入或修改的。

OptimizationFlags 类型是 QFlags<OptimizationFlag> 的 typedef。 它存储 OptimizationFlag 值的 OR 组合。

enum QGraphicsView::ViewportAnchor

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

另请参见 resizeAnchor and transformationAnchor

enum QGraphicsView::ViewportUpdateMode

这个枚举描述了当场景内容改变或暴露时 QGraphicsView 如何更新它的视口。

这个枚举是在 Qt 4.3 中引入或修改的。

另请参见 viewportUpdateMode

属性

alignment : Qt::Alignment

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

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

Qt::Alignment    alignment() const
void                    setAlignment(Qt::Alignment alignment)

backgroundBrush : QBrush

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

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

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

QBrush    backgroundBrush() const
void         setBackgroundBrush(const QBrush &brush)

另请参见 QGraphicsScene::backgroundBrush and foregroundBrush.

cacheMode : CacheMode

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

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

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

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

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

QGraphicsView::CacheMode     cacheMode() const
void                                            setCacheMode(QGraphicsView::CacheMode mode)

另请参见 resetCachedContent() and QPixmapCache

dragMode : DragMode

此属性保存在按下鼠标左键时在场景上拖动鼠标的行为。

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

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

QGraphicsView::DragMode    dragMode() const
void                                         setDragMode(QGraphicsView::DragMode mode)

foregroundBrush : QBrush

该属性包含场景的前景画笔。

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

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

QBrush    foregroundBrush() const
void         setForegroundBrush(const QBrush &brush)

另请参见 QGraphicsScene::foregroundBrush and backgroundBrush

interactive : bool

此属性保存视图是否允许场景交互。

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

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

bool    isInteractive() const
void    setInteractive(bool allowed)

optimizationFlags : OptimizationFlags

可用于调整 QGraphicsView 性能的标志。

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

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

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

这个属性是在 Qt 4.3 中引入的。

QGraphicsView::OptimizationFlags    optimizationFlags() const
void                                                     setOptimizationFlags(QGraphicsView::OptimizationFlags flags)

另请参见 setOptimizationFlag()。

renderHints : QPainter::RenderHints

此属性保存视图的默认呈现提示。

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

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

例如:

QGraphicsScene scene;
scene.addRect(QRectF(-10, -10, 20, 20));

QGraphicsView view(&scene);
view.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
view.show();
QPainter::RenderHints    renderHints() const
void                                 setRenderHints(QPainter::RenderHints hints)

resizeAnchor : ViewportAnchor

调整视图大小时,视图应如何定位场景。

QGraphicsView 使用这个属性来决定当视口小部件的大小改变时如何在视口中定位场景。 默认行为 NoAnchor 在调整大小期间保持场景的位置不变; 调整大小时,视图的左上角将出现锚定。

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

QGraphicsView::ViewportAnchor     resizeAnchor() const
void 																								  setResizeAnchor(QGraphicsView::ViewportAnchor anchor)

另请参见 alignmenttransformationAnchor

rubberBandSelectionMode : Qt::ItemSelectionMode

此属性包含使用橡皮筋选择矩形选择项目的行为。

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

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

这个属性是在 Qt 4.3 中引入的。

Qt::ItemSelectionMode    rubberBandSelectionMode() const
void                                  setRubberBandSelectionMode(Qt::ItemSelectionMode mode)

另请参见 dragModeitems(), 和 rubberBandRect()。

sceneRect : QRectF

此属性包含此视图可视化的场景区域。

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

如果未设置,或者如果设置了空 QRectF,则此属性与 QGraphicsScene::sceneRect 具有相同的值,并随 QGraphicsScene::sceneRect 更改。 否则,视图的场景矩形不受场景影响。

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

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

QRectF    sceneRect() const
void         setSceneRect(const QRectF &rect)
void         setSceneRect(qreal x, qreal y, qreal w, qreal h)

另请参见 QGraphicsScene::sceneRect

transformationAnchor : ViewportAnchor

视图在转换过程中应如何定位场景。

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

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

QGraphicsView::ViewportAnchor    transformationAnchor() const
void                                                  setTransformationAnchor(QGraphicsView::ViewportAnchor anchor)

另请参见 alignmentresizeAnchor

viewportUpdateMode : ViewportUpdateMode

视口应如何更新其内容。

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

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

这个属性是在 Qt 4.3 中引入的。

QGraphicsView::ViewportUpdateMode    viewportUpdateMode() const
void                                                           setViewportUpdateMode(QGraphicsView::ViewportUpdateMode mode)另请ViewportUpdateMode and cacheMode.

另请参见 ViewportUpdateModecacheMode

成员函数

QGraphicsView::QGraphicsView(QWidget *parent = nullptr)

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

QGraphicsView::QGraphicsView(QGraphicsScene *scene, QWidget *parent = nullptr)

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

[virtual] QGraphicsView::~QGraphicsView()

销毁 QGraphicsView 对象。

void QGraphicsView::centerOn(const QPointF &pos)

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

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

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

另请参见 ensureVisible()。

void QGraphicsView::centerOn(qreal x, qreal y)

这是一个重载功能。

提供此功能是为了方便。 它相当于调用 centerOn(QPointF(x, y))。

void QGraphicsView::centerOn(const QGraphicsItem *item)

这是一个重载功能。

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

另请参见 ensureVisible()。

[override virtual protected] void QGraphicsView::contextMenuEvent(QContextMenuEvent *event)

QAbstractScrollArea::contextMenuEvent() 重新实现。

[override virtual protected] void QGraphicsView::dragEnterEvent(QDragEnterEvent *event)

QAbstractScrollArea::dragEnterEvent() 重新实现。

[override virtual protected] void QGraphicsView::dragLeaveEvent(QDragLeaveEvent *event)

QAbstractScrollArea::dragLeaveEvent() 重新实现。

[override virtual protected] void QGraphicsView::dragMoveEvent(QDragMoveEvent *event)

QAbstractScrollArea::dragMoveEvent() 重新实现。

[virtual protected] void QGraphicsView::drawBackground(QPainter *painter, const QRectF &rect)

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

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

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

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

另请参见 drawForeground() 和 QGraphicsScene::drawBackground()。

[virtual protected] void QGraphicsView::drawForeground(QPainter *painter, const QRectF &rect)

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

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

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

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

另请参见 drawBackground() 和 QGraphicsScene::drawForeground()。

[override virtual protected] void QGraphicsView::dropEvent(QDropEvent *event)

QAbstractScrollArea::dropEvent() 重新实现。

void QGraphicsView::ensureVisible(const QRectF &rect, int xmargin = 50, int ymargin = 50)

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

另请参见 centerOn()。

void QGraphicsView::ensureVisible(qreal x, qreal y, qreal w, qreal h, int xmargin = 50, int ymargin = 50)

这是一个重载功能。

提供此功能是为了方便。 相当于调用了 ensureVisible(QRectF(x, y, w, h), xmargin, ymargin)。

void QGraphicsView::ensureVisible(const QGraphicsItem *item, int xmargin = 50, int ymargin = 50)

这是一个重载功能。

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

另请参见 centerOn()。

[override virtual protected] bool QGraphicsView::event(QEvent *event)

QAbstractScrollArea::event() 重新实现。

void QGraphicsView::fitInView(const QRectF &rect, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio)

缩放视图矩阵并滚动滚动条以确保场景矩形 rect 适合视口。 rect 必须在场景矩形内;否则,fitInView() 不能保证整个矩形都是可见的。

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

在 resizeEvent() 的重新实现中调用 fitInView() 是很常见的,以确保整个场景或场景的一部分在调整视图大小时自动缩放以适应视口的新大小。但请注意,如果新转换切换了滚动条的自动状态,则从 resizeEvent() 内部调用 fitInView() 可能会导致不需要的调整大小递归。您可以将滚动条策略切换为始终打开或始终关闭以防止出现这种情况(请参阅horizontalScrollBarPolicy() 和 verticalScrollBarPolicy())。

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

另请参见 setTransform(), ensureVisible(),和 centerOn()。

void QGraphicsView::fitInView(qreal x, qreal y, qreal w, qreal h, Qt::AspectRatioMode aspectRatioMode = ...)

这是一个重载功能。

这个方便的函数相当于调用 fitInView(QRectF(x, y, w, h), aspectRatioMode)。

另请参见 ensureVisible() 和 centerOn()。

void QGraphicsView::fitInView(const QGraphicsItem *item, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio)

这是一个重载功能。

确保 item 紧密地适合视图,根据 aspectRatioMode 缩放视图。

另请参见 ensureVisible() 和 centerOn()。

[override virtual protected] void QGraphicsView::focusInEvent(QFocusEvent *event)

QWidget::focusInEvent() 重新实现。

[override virtual protected] bool QGraphicsView::focusNextPrevChild(bool next)

QWidget::focusNextPrevChild() 重新实现。

[override virtual protected] void QGraphicsView::focusOutEvent(QFocusEvent *event)

QWidget::focusOutEvent() 重新实现。

[override virtual protected] void QGraphicsView::inputMethodEvent(QInputMethodEvent *event)

QWidget::inputMethodEvent() 重新实现。

[override virtual] QVariant QGraphicsView::inputMethodQuery(Qt::InputMethodQuery query) const

QWidget::inputMethodQuery() 重新实现。

[slot] void QGraphicsView::invalidateScene(const QRectF &rect = QRectF(), QGraphicsScene::SceneLayers layers = QGraphicsScene::AllLayers)

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

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

请注意,QGraphicsView 目前仅支持后台缓存(请参阅 QGraphicsView::CacheBackground)。 如果传递了除 QGraphicsScene::BackgroundLayer 之外的任何层,则此函数等效于调用 update()。

另请参见 QGraphicsScene::invalidate() 和 update()。

bool QGraphicsView::isTransformed() const

如果视图已转换(即已分配非标识转换,或滚动条已调整),则返回 true。

这个函数是在 Qt 4.6 中引入的。

另请参见 setTransform(),horizontalScrollBar(),和 verticalScrollBar()。

QGraphicsItem *QGraphicsView::itemAt(const QPoint &pos) const

返回位置 pos 处的 item,该 item 位于视口坐标中。 如果此位置有多个 item ,则此函数返回最上面的 item。

例如:

void CustomView::mousePressEvent(QMouseEvent *event)
{
    if (QGraphicsItem *item = itemAt(event->pos())) {
        qDebug() << "You clicked on item" << item;
    } else {
        qDebug("You didn't click on an item.");
    }
}

另请参见 items() 和 Sorting

QGraphicsItem *QGraphicsView::itemAt(int x, int y) const

这是一个重载功能。

提供此功能是为了方便。 它相当于调用 itemAt(QPoint(x, y))。

QList<QGraphicsItem *> QGraphicsView::items() const

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

另请参见 QGraphicsScene::items() 和 Sorting

QList<QGraphicsItem *> QGraphicsView::items(const QPoint &pos) const

返回视图中位置 pos 处所有 items 的列表。 item 按降序排列(即列表中的第一个 item 是最上面的 item,最后一个 item 是最下面的 item)。 pos 在视口坐标中。

这个函数最常在 QGraphicsView 的子类中的鼠标事件处理程序中调用。 pos 在未转换的视口坐标中,就像 QMouseEvent::pos() 一样。

void CustomView::mousePressEvent(QMouseEvent *event)
{
    qDebug() << "There are" << items(event->pos()).size()
             << "items at position" << mapToScene(event->pos());
}

另请参见 QGraphicsScene::items() 和 Sorting

QList<QGraphicsItem *> QGraphicsView::items(int x, int y) const

提供此功能是为了方便。 它相当于调用 items(QPoint(x, y))。

QList<QGraphicsItem *> QGraphicsView::items(const QRect &rect, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const

这是一个重载功能。

根据模式,返回包含在 rect 中或与 rect 相交的所有 items 的列表。 rect 在视口坐标中。

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

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

另请参见 itemAt(),items(), mapToScene(), 和 Sorting

QList<QGraphicsItem *> QGraphicsView::items(int x, int y, int w, int h, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const

这个方便的函数相当于调用 items(QRectF(x, y, w, h), mode)。

这个函数是在 Qt 4.3 中引入的。

QList<QGraphicsItem *> QGraphicsView::items(const QPolygon &polygon, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const

这是一个重载功能。

根据模式,返回包含多边形或与多边形相交的所有 items 的列表。 多边形在视口坐标中。

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

items 按降序排列(即,返回列表中的第一个 item 是最上面的 item)。

另请参见 itemAt(),items(), mapToScene(), 和 Sorting

QList<QGraphicsItem *> QGraphicsView::items(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const

这是一个重载功能。

根据模式,返回包含在路径中或与路径相交的所有 items 的列表。 路径在视口坐标中。

mode 的默认值是 Qt::IntersectsItemShape; 返回其确切形状与路径相交或包含在路径中的所有 items。

另请参见 itemAt(),items(), mapToScene(), 和 Sorting

[override virtual protected] void QGraphicsView::keyPressEvent(QKeyEvent *event)

QAbstractScrollArea::keyPressEvent() 重新实现。

[override virtual protected] void QGraphicsView::keyReleaseEvent(QKeyEvent *event)

QWidget::keyReleaseEvent() 重新实现。

QPoint QGraphicsView::mapFromScene(const QPointF &point) const

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

另请参见 mapToScene()。

QPolygon QGraphicsView::mapFromScene(const QRectF &rect) const

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

另请参见 mapToScene()。

QPolygon QGraphicsView::mapFromScene(const QPolygonF &polygon) const

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

另请参见 mapToScene()。

QPainterPath QGraphicsView::mapFromScene(const QPainterPath &path) const

将场景坐标painter路径 path 返回到视口坐标painter路径。

另请参见 mapToScene()。

QPoint QGraphicsView::mapFromScene(qreal x, qreal y) const

提供此功能是为了方便。 它相当于调用 mapFromScene(QPointF(x, y))。

QPolygon QGraphicsView::mapFromScene(qreal x, qreal y, qreal w, qreal h) const

提供此功能是为了方便。 它相当于调用 mapFromScene(QRectF(x, y, w, h))。

QPointF QGraphicsView::mapToScene(const QPoint &point) const

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

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

另请参见 mapFromScene()。

QPolygonF QGraphicsView::mapToScene(const QRect &rect) const

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

另请参见 mapFromScene()。

QPolygonF QGraphicsView::mapToScene(const QPolygon &polygon) const

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

另请参见 mapFromScene()。

QPainterPath QGraphicsView::mapToScene(const QPainterPath &path) const

返回映射到场景坐标 painte r路径的视口 painter 路径 path

另请参见 mapFromScene()。

QPointF QGraphicsView::mapToScene(int x, int y) const

提供此功能是为了方便。 它相当于调用 mapToScene(QPoint(x, y))。

QPolygonF QGraphicsView::mapToScene(int x, int y, int w, int h) const

提供此功能是为了方便。 它相当于调用 mapToScene(QRect(x, y, w, h))。

QMatrix QGraphicsView::matrix() const

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

另请参见 setMatrix(), transform(), rotate(), scale(), shear(), 和 translate()。

[override virtual protected] void QGraphicsView::mouseDoubleClickEvent(QMouseEvent *event)

QAbstractScrollArea::mouseDoubleClickEvent() 重新实现。

[override virtual protected] void QGraphicsView::mouseMoveEvent(QMouseEvent *event)

QAbstractScrollArea::mouseMoveEvent() 重新实现。

[override virtual protected] void QGraphicsView::mousePressEvent(QMouseEvent *event)

QAbstractScrollArea::mousePressEvent() 重新实现。

[override virtual protected] void QGraphicsView::mouseReleaseEvent(QMouseEvent *event)

QAbstractScrollArea::mouseReleaseEvent() 重新实现。

[override virtual protected] void QGraphicsView::paintEvent(QPaintEvent *event)

QAbstractScrollArea::paintEvent() 重新实现。

void QGraphicsView::render(QPainter *painter, const QRectF &target = QRectF(), const QRect &source = QRect(), 
        Qt::AspectRatioMode aspectRatioMode = Qt::KeepAspectRatio)

使用painter 将处于视图坐标中的源矩形从场景渲染到处于绘制设备坐标中的目标。 此函数可用于将视图的内容捕获到绘图设备上,例如 QImage(例如,截取屏幕截图)或打印到 QPrinter。 例如:

QGraphicsScene scene;
scene.addItem(...
...

QGraphicsView view(&scene);
view.show();
...

QPrinter printer(QPrinter::HighResolution);
printer.setPageSize(QPrinter::A4);
QPainter painter(&printer);

// 打印,将视口内容装入整页
view.render(&painter);

// 将视口的上半部分打印到下半部分。
// 页面的一半。
QRect 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() 来确定要绘制的内容。 如果目标是空矩形,则将使用 painter 绘画设备的完整尺寸(例如,对于 QPrinter,是页面的大小)。

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

另请参见 QGraphicsScene::render()。

void QGraphicsView::resetCachedContent()

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

当 backgroundBrush 或 QGraphicsScene::backgroundBrush 属性更改时,会自动为您调用此函数; 如果您重新实现了 QGraphicsScene::drawBackground() 或 QGraphicsView::drawBackground() 来绘制自定义背景,并且需要触发完全重绘,则只需调用此函数。

另请参见 cacheMode()。

void QGraphicsView::resetMatrix()

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

另请参见 resetTransform()。

void QGraphicsView::resetTransform()

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

另请参见 transform() 和 setTransform()。

[override virtual protected] void QGraphicsView::resizeEvent(QResizeEvent *event)

QAbstractScrollArea::resizeEvent() 重新实现。

void QGraphicsView::rotate(qreal angle)

顺时针旋转当前视图变换角度度数。

另请参见 setTransform(), transform(), scale(), shear(), 和 translate()。

[signal] void QGraphicsView::rubberBandChanged(QRect rubberBandRect, QPointF fromScenePoint, QPointF toScenePoint)

当橡皮筋矩形改变时发出这个信号。 视口 Rect 由rubberBandRect 指定。 拖动开始位置和拖动结束位置通过 fromScenePoint 和 toScenePoint 在场景点中提供。

当橡皮筋选择结束时,此信号将与空值一起发射。

这个函数是在 Qt 5.1 中引入的。

另请参见 rubberBandRect()。

QRect QGraphicsView::rubberBandRect() const

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

请注意,此 QRect 的一部分可以超出视觉视口。 例如它可以包含负值。

这个函数是在 Qt 5.1 中引入的。

另请参见 rubberBandSelectionModerubberBandChanged()。

void QGraphicsView::scale(qreal sx, qreal sy)

按 (sx, sy) 缩放当前视图转换。

另请参见 setTransform(), transform(), rotate(), shear(), 和 translate()。

QGraphicsScene *QGraphicsView::scene() const

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

另请参见 setScene()。

[override virtual protected] void QGraphicsView::scrollContentsBy(int dx, int dy)

QAbstractScrollArea::scrollContentsBy() 重新实现。

void QGraphicsView::setMatrix(const QMatrix &matrix, bool combine = false)

将视图的当前转换矩阵设置为矩阵。

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

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

例子:

QGraphicsScene scene;
scene.addText("GraphicsView rotated clockwise");

QGraphicsView view(&scene);
view.rotate(90); // 文本以 90 度顺时针旋转呈现
view.show();

为了使用转换后的视图简化与项目的交互,QGraphicsView 提供了 mapTo... 和 mapFrom... 函数,可以在场景和视图坐标之间进行转换。 例如,您可以调用 mapToScene() 将视图坐标映射到浮点场景坐标,或调用 mapFromScene() 将浮点场景坐标映射到视图坐标。

另请参见 matrix(), setTransform(), rotate(), scale(), shear(), 和 translate()。

void QGraphicsView::setOptimizationFlag(QGraphicsView::OptimizationFlag flag, bool enabled = true)

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

另请参见 optimizationFlags

void QGraphicsView::setRenderHint(QPainter::RenderHint hint, bool enabled = true)

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

另请参见 renderHints

void QGraphicsView::setScene(QGraphicsScene *scene)

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

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

视图不拥有场景的所有权。

另请参见 scene()。

void QGraphicsView::setTransform(const QTransform &matrix, bool combine = false)

将视图的当前转换矩阵设置为矩阵。

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

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

例子:

QGraphicsScene scene;
 scene.addText("GraphicsView rotated clockwise");

 QGraphicsView view(&scene);
 view.rotate(90);
 view.show();

为了使用转换后的视图简化与项目的交互,QGraphicsView 提供了 mapTo... 和 mapFrom... 函数,可以在场景和视图坐标之间进行转换。 例如,您可以调用 mapToScene() 将视图坐标映射到浮点场景坐标,或调用 mapFromScene() 将浮点场景坐标映射到视图坐标。

另请参见 transform(), rotate(), scale(), shear(), 和 translate()。

[override virtual protected slot] void QGraphicsView::setupViewport(QWidget *widget)

从 QAbstractScrollArea::setupViewport() 重新实现。

在调用 setViewport() 之后,QAbstractScrollArea 会调用此槽。 在 QGraphicsView 的子类中重新实现此函数以在使用前初始化新的视口小部件。

另请参见 setViewport()。

void QGraphicsView::shear(qreal sh, qreal sv)

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

另请参见 setTransform(), transform(), rotate(), scale(), 和 translate()。

[override virtual protected] void QGraphicsView::showEvent(QShowEvent *event)

QWidget::showEvent() 重新实现。

[override virtual] QSize QGraphicsView::sizeHint() const

QAbstractScrollArea::sizeHint() 重新实现。

QTransform QGraphicsView::transform() const

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

另请参见 setTransform(), rotate(), scale(), shear(), 和 translate()。

void QGraphicsView::translate(qreal dx, qreal dy)

将当前视图转换转换为 (dx, dy)。

另请参见 setTransform(), transform(), rotate(), 和 shear()。

[slot] void QGraphicsView::updateScene(const QList<QRectF> &rects)

安排场景矩形 rects 的更新。

另请参见 QGraphicsScene::changed()。

[slot] void QGraphicsView::updateSceneRect(const QRectF &rect)

通知 QGraphicsView 场景的场景矩形已更改。 rect 是新的场景 rect。 如果视图已经有一个明确设置的场景矩形,这个函数什么都不做。

另请参见 sceneRectQGraphicsScene::sceneRectChanged()。

[override virtual protected] bool QGraphicsView::viewportEvent(QEvent *event)

QAbstractScrollArea::viewportEvent() 重新实现。

QTransform QGraphicsView::viewportTransform() const

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

另请参见 mapToScene() 和 mapFromScene()。

[override virtual protected] void QGraphicsView::wheelEvent(QWheelEvent *event)

QAbstractScrollArea::wheelEvent() 重新实现。

相关推荐

# Python 3 # Python 3字典Dictionary(1)

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中,格式如...

Python第八课:数据类型中的字典及其函数与方法

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值...

Python中字典详解(python 中字典)

字典是Python中使用键进行索引的重要数据结构。它们是无序的项序列(键值对),这意味着顺序不被保留。键是不可变的。与列表一样,字典的值可以保存异构数据,即整数、浮点、字符串、NaN、布尔值、列表、数...

Python3.9又更新了:dict内置新功能,正式版十月见面

机器之心报道参与:一鸣、JaminPython3.8的热乎劲还没过去,Python就又双叒叕要更新了。近日,3.9版本的第四个alpha版已经开源。从文档中,我们可以看到官方透露的对dic...

Python3 基本数据类型详解(python三种基本数据类型)

文章来源:加米谷大数据Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在Python中,变量就是变量,它没有类型,我们所说的"类型"是变...

一文掌握Python的字典(python字典用法大全)

字典是Python中最强大、最灵活的内置数据结构之一。它们允许存储键值对,从而实现高效的数据检索、操作和组织。本文深入探讨了字典,涵盖了它们的创建、操作和高级用法,以帮助中级Python开发...

超级完整|Python字典详解(python字典的方法或操作)

一、字典概述01字典的格式Python字典是一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。字典的每个键值key=>value对用冒号:分割,每个对之间用逗号,...

Python3.9版本新特性:字典合并操作的详细解读

处于测试阶段的Python3.9版本中有一个新特性:我们在使用Python字典时,将能够编写出更可读、更紧凑的代码啦!Python版本你现在使用哪种版本的Python?3.7分?3.5分?还是2.7...

python 自学,字典3(一些例子)(python字典有哪些基本操作)

例子11;如何批量复制字典里的内容2;如何批量修改字典的内容3;如何批量修改字典里某些指定的内容...

Python3.9中的字典合并和更新,几乎影响了所有Python程序员

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

Python3大字典:《Python3自学速查手册.pdf》限时下载中

最近有人会想了,2022了,想学Python晚不晚,学习python有前途吗?IT行业行业薪资高,发展前景好,是很多求职群里严重的香饽饽,而要进入这个高薪行业,也不是那么轻而易举的,拿信工专业的大学生...

python学习——字典(python字典基本操作)

字典Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。但它是无序的,包含的元素个数不限,值...

324页清华教授撰写【Python 3 菜鸟查询手册】火了,小白入门字典

如何入门学习python...

Python3.9中的字典合并和更新,了解一下

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

python3基础之字典(python中字典的基本操作)

字典和列表一样,也是python内置的一种数据结构。字典的结构如下图:列表用中括号[]把元素包起来,而字典是用大括号{}把元素包起来,只不过字典的每一个元素都包含键和值两部分。键和值是一一对应的...

取消回复欢迎 发表评论:

请填写验证码