本页内容

QGraphicsView Class

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

头文件: #include <QGraphicsView>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
继承自: QAbstractScrollArea

公共类型

flags CacheMode
enum CacheModeFlag { CacheNone, CacheBackground }
enum DragMode { NoDrag, ScrollHandDrag, RubberBandDrag }
enum OptimizationFlag { DontSavePainterState, DontAdjustForAntialiasing, IndirectPainting }
flags OptimizationFlags
enum ViewportAnchor { NoAnchor, AnchorViewCenter, AnchorUnderMouse }
enum ViewportUpdateMode { FullViewportUpdate, MinimalViewportUpdate, SmartViewportUpdate, BoundingRectViewportUpdate, NoViewportUpdate }

属性

公共函数

QGraphicsView(QWidget *parent = nullptr)
QGraphicsView(QGraphicsScene *scene, QWidget *parent = nullptr)
virtual ~QGraphicsView()
Qt::Alignment alignment() const
QBrush backgroundBrush() const
QGraphicsView::CacheMode cacheMode() const
void centerOn(const QPointF &pos)
void centerOn(const QGraphicsItem *item)
void centerOn(qreal x, qreal y)
QGraphicsView::DragMode dragMode() const
void ensureVisible(const QRectF &rect, int xmargin = 50, int ymargin = 50)
void ensureVisible(const QGraphicsItem *item, int xmargin = 50, int ymargin = 50)
void ensureVisible(qreal x, qreal y, qreal w, qreal h, int xmargin = 50, int ymargin = 50)
void fitInView(const QRectF &rect, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio)
void fitInView(const QGraphicsItem *item, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio)
void fitInView(qreal x, qreal y, qreal w, qreal h, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio)
QBrush foregroundBrush() const
bool isInteractive() const
bool isTransformed() const
QGraphicsItem *itemAt(const QPoint &pos) const
QGraphicsItem *itemAt(int x, int y) const
QList<QGraphicsItem *> items() const
QList<QGraphicsItem *> items(const QPoint &pos) const
QList<QGraphicsItem *> items(int x, int y) const
QList<QGraphicsItem *> items(int x, int y, int w, int h, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
QList<QGraphicsItem *> items(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
QList<QGraphicsItem *> items(const QPolygon &polygon, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
QList<QGraphicsItem *> items(const QRect &rect, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
QPainterPath mapFromScene(const QPainterPath &path) const
QPoint mapFromScene(const QPointF &point) const
QPolygon mapFromScene(const QPolygonF &polygon) const
QPolygon mapFromScene(const QRectF &rect) const
QPoint mapFromScene(qreal x, qreal y) const
QPolygon mapFromScene(qreal x, qreal y, qreal w, qreal h) const
QPainterPath mapToScene(const QPainterPath &path) const
QPointF mapToScene(const QPoint &point) const
QPolygonF mapToScene(const QPolygon &polygon) const
QPolygonF mapToScene(const QRect &rect) const
QPointF mapToScene(int x, int y) const
QPolygonF mapToScene(int x, int y, int w, int h) const
QGraphicsView::OptimizationFlags optimizationFlags() const
void render(QPainter *painter, const QRectF &target = QRectF(), const QRect &source = QRect(), Qt::AspectRatioMode aspectRatioMode = Qt::KeepAspectRatio)
QPainter::RenderHints renderHints() const
void resetCachedContent()
void resetTransform()
QGraphicsView::ViewportAnchor resizeAnchor() const
void rotate(qreal angle)
QRect rubberBandRect() const
Qt::ItemSelectionMode rubberBandSelectionMode() const
void scale(qreal sx, qreal sy)
QGraphicsScene *scene() const
QRectF sceneRect() const
void setAlignment(Qt::Alignment alignment)
void setBackgroundBrush(const QBrush &brush)
void setCacheMode(QGraphicsView::CacheMode mode)
void setDragMode(QGraphicsView::DragMode mode)
void setForegroundBrush(const QBrush &brush)
void setInteractive(bool allowed)
void setOptimizationFlag(QGraphicsView::OptimizationFlag flag, bool enabled = true)
void setOptimizationFlags(QGraphicsView::OptimizationFlags flags)
void setRenderHint(QPainter::RenderHint hint, bool enabled = true)
void setRenderHints(QPainter::RenderHints hints)
void setResizeAnchor(QGraphicsView::ViewportAnchor anchor)
void setRubberBandSelectionMode(Qt::ItemSelectionMode mode)
void setScene(QGraphicsScene *scene)
void setSceneRect(const QRectF &rect)
void setSceneRect(qreal x, qreal y, qreal w, qreal h)
void setTransform(const QTransform &matrix, bool combine = false)
void setTransformationAnchor(QGraphicsView::ViewportAnchor anchor)
void setViewportUpdateMode(QGraphicsView::ViewportUpdateMode mode)
void shear(qreal sh, qreal sv)
QTransform transform() const
QGraphicsView::ViewportAnchor transformationAnchor() const
void translate(qreal dx, qreal dy)
QTransform viewportTransform() const
QGraphicsView::ViewportUpdateMode viewportUpdateMode() const

重新实现的公共函数

virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const override
virtual QSize sizeHint() const override

公共插槽

void invalidateScene(const QRectF &rect = QRectF(), QGraphicsScene::SceneLayers layers = QGraphicsScene::AllLayers)
void updateScene(const QList<QRectF> &rects)
void updateSceneRect(const QRectF &rect)

信号

void rubberBandChanged(QRect rubberBandRect, QPointF fromScenePoint, QPointF toScenePoint)

受保护函数

virtual void drawBackground(QPainter *painter, const QRectF &rect)
virtual void drawForeground(QPainter *painter, const QRectF &rect)

重新实现的受保护函数

virtual void contextMenuEvent(QContextMenuEvent *event) override
virtual void dragEnterEvent(QDragEnterEvent *event) override
virtual void dragLeaveEvent(QDragLeaveEvent *event) override
virtual void dragMoveEvent(QDragMoveEvent *event) override
virtual void dropEvent(QDropEvent *event) override
virtual bool event(QEvent *event) override
virtual void focusInEvent(QFocusEvent *event) override
virtual bool focusNextPrevChild(bool next) override
virtual void focusOutEvent(QFocusEvent *event) override
virtual void inputMethodEvent(QInputMethodEvent *event) override
virtual void keyPressEvent(QKeyEvent *event) override
virtual void keyReleaseEvent(QKeyEvent *event) override
virtual void mouseDoubleClickEvent(QMouseEvent *event) override
virtual void mouseMoveEvent(QMouseEvent *event) override
virtual void mousePressEvent(QMouseEvent *event) override
virtual void mouseReleaseEvent(QMouseEvent *event) override
virtual void paintEvent(QPaintEvent *event) override
virtual void resizeEvent(QResizeEvent *event) override
virtual void scrollContentsBy(int dx, int dy) override
virtual void showEvent(QShowEvent *event) override
virtual bool viewportEvent(QEvent *event) override
virtual void wheelEvent(QWheelEvent *event) override

受保护的插槽

virtual void setupViewport(QWidget *widget) override

详细说明

QGraphicsView 将QGraphicsScene 的内容可视化显示在一个可滚动的视口中。若要创建包含几何项的场景,请参阅QGraphicsScene 的文档。QGraphicsView 是图形视图框架(Graphics View Framework)的一部分。

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

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

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

您可以通过滚动条,或调用 `centerOn()` 显式地滚动到场景上的任意位置。通过向 `centerOn()` 传递一个点,QGraphicsView 将滚动其视口,以确保该点位于视图的中心。 此外,还提供了一个重载函数用于滚动到QGraphicsItem ,此时 QGraphicsView 将确保该项的中心位于视图中央。若您仅需确保某个区域可见(但不一定居中),则可改用ensureVisible()。

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

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

默认情况下,QGraphicsView 为视口小部件提供一个普通的QWidget 。您可以通过调用viewport() 访问该小部件,也可以通过调用setViewport() 将其替换。若要使用 OpenGL 进行渲染,只需调用 setViewport(newQOpenGLWidget) 即可。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` 的使用。在此设置下,并非所有控件和样式的组合都能得到支持。您应仔细测试您的用户界面并进行必要的调整。

另请参阅 QGraphicsScene 、QGraphicsItem 和QGraphicsSceneEvent 。

成员类型文档

enum QGraphicsView::CacheModeFlag
flags QGraphicsView::CacheMode

此枚举描述了可为QGraphicsView 的缓存模式设置的标志。

常量值描述
QGraphicsView::CacheNone0x0所有绘制都直接在视口上进行。
QGraphicsView::CacheBackground0x1背景被缓存。这既影响自定义背景,也影响基于backgroundBrush 属性的背景。启用此标志时,QGraphicsView 将分配一个与视口尺寸完全一致的位图。

CacheMode 类型是QFlags<CacheModeFlag> 的 typedef。它存储了 CacheModeFlag 值的按“或”运算组合。

另请参阅 cacheMode 。

enum QGraphicsView::DragMode

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

常量值描述
QGraphicsView::NoDrag0不发生任何操作;鼠标事件被忽略。
QGraphicsView::ScrollHandDrag1光标变为指向手形,拖动鼠标将滚动滚动条。此模式在interactive 和非交互模式下均有效。
QGraphicsView::RubberBandDrag2将出现一条“橡皮筋”。拖动鼠标可调整“橡皮筋”的几何形状,所有被“橡皮筋”覆盖的项目均被选中。此模式在非交互式视图中被禁用。

另请参阅 dragMode 和QGraphicsScene::setSelectionArea()。

enum QGraphicsView::OptimizationFlag
flags QGraphicsView::OptimizationFlags

此枚举描述了可在QGraphicsView 中启用以提升渲染性能的标志。默认情况下,这些标志均未启用。请注意,设置标志通常会带来副作用,且该副作用在不同的绘制设备和平台上可能有所不同。

常量值描述
QGraphicsView::DontSavePainterState0x1在渲染时,QGraphicsView 会在渲染背景或前景以及渲染每个项目时保护绘制器的状态(参见QPainter::save())。这允许您将绘制器保留在已更改的状态下(即,您可以在绘制后不恢复状态的情况下调用QPainter::setPen() 或QPainter::setBrush())。 但是,如果项目始终会恢复状态,则应启用此标志,以防止QGraphicsView 执行相同的操作。
QGraphicsView::DontAdjustForAntialiasing0x2禁用QGraphicsView 对暴露区域的抗锯齿自动调整。在QGraphicsItem::boundingRect() 边界上渲染抗锯齿线的项目,可能会导致线条的部分超出边界。为防止渲染异常,QGraphicsView 会将所有暴露区域向各个方向扩展 2 像素。 如果启用此标志,QGraphicsView 将不再执行这些调整,从而最大限度地减少需要重绘的区域,进而提高性能。一个常见的副作用是,使用抗锯齿绘制的项目在移动时,可能会在场景中留下绘制痕迹。
QGraphicsView::IndirectPainting0x4自 Qt 4.6 起,恢复了调用 QGraphicsView::drawItems() 和 QGraphicsScene::drawItems() 的旧绘制算法。仅用于与旧代码的兼容性。

OptimizationFlags 类型是QFlags<OptimizationFlag> 的 typedef。它存储 OptimizationFlag 值的按“或”运算组合。

enum QGraphicsView::ViewportAnchor

该枚举描述了当用户调整视图大小或视图发生变换时,QGraphicsView 可使用的锚点。

常量值描述
QGraphicsView::NoAnchor0无锚点,即视图不改变场景中的位置。
QGraphicsView::AnchorViewCenter1将视图中心的场景点用作锚点。
QGraphicsView::AnchorUnderMouse2将鼠标所在位置作为锚点。

另请参阅 resizeAnchor 和transformationAnchor 。

enum QGraphicsView::ViewportUpdateMode

此枚举描述了当场景内容发生变化或被暴露时,QGraphicsView 如何更新其视口。

常量值描述
QGraphicsView::FullViewportUpdate0当场景的任何可见部分发生变化或被重新暴露时,QGraphicsView 将更新整个视口。当QGraphicsView 用于确定要绘制内容的耗时超过实际绘制耗时时(例如,当大量小型项目被反复更新时),这种方法的速度最快。 对于不支持部分更新的视口(如QOpenGLWidget ),以及需要禁用滚动优化的视口,这是首选的更新模式。
QGraphicsView::MinimalViewportUpdate1QGraphicsView 将确定需要重绘的最小视口区域,通过避免重绘未发生变化的区域来最大限度地减少绘制时间。这是QGraphicsView 的默认模式。尽管这种方法通常能提供最佳性能,但如果场景中存在大量细微的可见变化,QGraphicsView 最终可能花费在寻找最小更新区域上的时间会比实际绘制时间更长。
QGraphicsView::SmartViewportUpdate2QGraphicsView 将通过分析需要重绘的区域来尝试找到最佳更新模式。
QGraphicsView::BoundingRectViewportUpdate4视口内所有变化的包围矩形都将被重绘。此模式的优势在于,QGraphicsView 仅需在单一区域内搜索变化,从而最大限度地减少了确定需要重绘内容所花费的时间。其缺点是,未发生变化的区域也需要被重绘。
QGraphicsView::NoViewportUpdate3QGraphicsView 当场景发生变化时,绝不会更新其视口;预期由用户控制所有更新。此模式会禁用QGraphicsView 中所有(可能较慢的)项目可见性检测,适用于需要固定帧率的场景,或者视口由外部更新的情况。

另请参阅 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 和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() 和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 和backgroundBrush 。

interactive : bool

该属性用于控制视图是否允许与场景交互。

如果启用,则该视图将允许场景交互。否则,该视图将不允许交互,且任何鼠标或键盘事件都会被忽略(即,它将作为只读视图运行)。

默认情况下,该属性的值为true 。

访问函数:

bool isInteractive() const
void setInteractive(bool allowed)

optimizationFlags : OptimizationFlags

可用于优化QGraphicsView 性能的参数。

QGraphicsView 通过剪裁、额外的边界矩形调整以及其他辅助手段,来提升常见图形场景的渲染质量和性能。但是,根据目标平台、场景以及所使用的视口不同,其中某些操作可能会导致性能下降。

不同标志的效果各不相同;详情请参阅OptimizationFlags 文档。

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

访问函数:

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)

另请参阅 alignment和transformationAnchor 。

rubberBandSelectionMode : Qt::ItemSelectionMode

此属性控制使用“橡皮筋”选择矩形选择项目时的行为。

该属性定义了在使用“RubberBandDrag ”拖动模式时,项目的选中方式。

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

访问函数:

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

另请参阅 dragMode 、items() 以及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)

另请参阅 alignment和resizeAnchor 。

viewportUpdateMode : ViewportUpdateMode

视口应如何更新其内容。

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

默认值为MinimalViewportUpdate ,其中QGraphicsView 会在内容发生变化时尽可能只更新视口中的最小区域。

访问函数:

QGraphicsView::ViewportUpdateMode viewportUpdateMode() const
void setViewportUpdateMode(QGraphicsView::ViewportUpdateMode mode)

另请参阅 ViewportUpdateMode 和cacheMode 。

成员函数文档

QGraphicsView::QGraphicsView(QWidget *parent = nullptr)

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

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

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

[virtual noexcept] QGraphicsView::~QGraphicsView()

销毁QGraphicsView 对象。

void QGraphicsView::centerOn(const QPointF &pos)

滚动视口中的内容,以确保场景坐标pos 位于视图中心。

由于pos 是一个浮点坐标,而滚动条操作的是整数坐标,因此居中效果仅为近似值。

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

另请参阅 ensureVisible()。

void QGraphicsView::centerOn(const QGraphicsItem *item)

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

这是一个重载函数。

另请参阅 ensureVisible()。

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

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

这是一个重载函数。

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

重写了:QAbstractScrollArea::contextMenuEvent(QContextMenuEvent *e)。

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

重写了:QAbstractScrollArea::dragEnterEvent(QDragEnterEvent *event)。

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

重写了:QAbstractScrollArea::dragLeaveEvent(QDragLeaveEvent *event)。

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

重写了:QAbstractScrollArea::dragMoveEvent(QDragMoveEvent *event)。

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

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

若您仅需为背景定义颜色、纹理或渐变,则可改调用 `setBackgroundBrush()`。

所有绘制操作均在场景坐标系中进行。rect 表示可见的矩形区域。

默认实现会使用视图的backgroundBrush 来填充rect 。如果未定义此类画笔(默认情况),则会调用场景的drawBackground()函数。

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

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

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

若您仅需为前景定义颜色、纹理或渐变,则可改用setForegroundBrush()。

所有绘制操作均在场景坐标系中进行。rect 表示可绘制区域。

默认实现会使用视图的 `foregroundBrush` 来填充 `rect `。如果未定义此类画笔(默认情况),则会调用场景的 `drawForeground()` 函数。

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

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

重写了:QAbstractScrollArea::dropEvent(QDropEvent *event)。

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

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

另请参阅 centerOn()。

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

滚动视口内容,使项目item 的中心可见,其边距由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)。

这是一个重载函数。

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

重写了:QAbstractScrollArea::event(QEvent *event)。

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

对视图矩阵进行缩放,并调整滚动条,以确保场景矩形rect 完全位于视口内。rect 必须位于场景矩形内部;否则,fitInView() 无法保证整个矩形均处于可见状态。

此函数会保留视图的旋转、平移或剪切。视图将根据aspectRatioMode 进行缩放。如果rect 无法紧密适配,则会在视图中居中显示。

通常会在resizeEvent()的重写版本内部调用fitInView(),以确保当视图被调整大小时,整个场景或场景的某些部分会自动缩放以适应视口的新尺寸。 但请注意,如果在resizeEvent() 内部调用 fitInView(),且新的变换会切换滚动条的自动状态,则可能会导致不希望出现的重置递归。您可以通过将滚动条策略切换为“始终开启”或“始终关闭”来防止这种情况(参见horizontalScrollBarPolicy() 和verticalScrollBarPolicy())。

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

另请参阅 setTransform()、ensureVisible() 和centerOn()。

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

确保item 能紧密嵌入视图中,并根据aspectRatioMode 对视图进行缩放。

这是一个重载函数。

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

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

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

这是一个重载函数。

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

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

重写了:QWidget::focusInEvent(QFocusEvent *event)。

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

重新实现了:QWidget::focusNextPrevChild (bool next)。

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

重写了:QWidget::focusOutEvent(QFocusEvent *event)。

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

重写了:QWidget::inputMethodEvent(QInputMethodEvent *event)。

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

重写了:QWidget::inputMethodQuery (Qt::InputMethodQuery query)const。

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

在rect 中无效化layers 并安排重绘。rect 采用场景坐标系。在rect 中,layers 的任何缓存内容都将被无条件无效化并重绘。

您可以调用此函数,向QGraphicsView 通知场景背景或前景的变更。该函数通常用于具有瓦片式背景的场景,当QGraphicsView 已启用背景缓存时,用于通知背景变化。

请注意,QGraphicsView 目前仅支持背景缓存(参见QGraphicsView::CacheBackground )。如果传入的图层中不包含QGraphicsScene::BackgroundLayer ,则此函数等同于调用update()。

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

bool QGraphicsView::isTransformed() const

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

另请参阅 setTransform()、horizontalScrollBar() 和verticalScrollBar()。

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

返回位于坐标pos (以视口坐标计)处的项目。如果该位置存在多个项目,则该函数返回最顶层的项目。

示例:

voidCustomView::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

返回关联场景中所有元素的列表,按堆叠顺序从高到低排列(即,返回列表中的第一个元素位于最顶层)。

另请参阅 QGraphicsScene::items() 和Sorting 。

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

返回视图中位于位置pos 处的所有项的列表。这些项按堆叠顺序从高到低排列(即,列表中的第一个项位于最上方,最后一个项位于最下方)。pos 采用视口坐标系。

该函数通常在QGraphicsView 的子类中,通过鼠标事件处理程序调用。pos 采用未变换的视口坐标系,与QMouseEvent::position()相同。

voidCustomView::mousePressEvent(QMouseEvent*event)
{
    qDebug() << "There are" << items(event->pos()).size()
            << "位置处的项目" <<mapToScene(event->pos());
}

另请参阅 QGraphicsScene::items() 和Sorting 。

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

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

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)。

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

返回一个列表,其中包含所有根据mode 条件,要么被path 所包含,要么与 相交的项。path 采用视口坐标系。

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

这是一个重载函数。

另请参阅 itemAt()、items()、mapToScene() 以及Sorting 。

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

返回一个列表,其中包含所有根据mode 的条件,要么被polygon 包含,要么与 相交的项。polygon 采用视口坐标系。

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

这些项目按堆叠顺序从高到低排序(即,返回列表中的第一个项目是位于最上方的项目)。

这是一个重载函数。

另请参阅 itemAt()、items()、mapToScene() 和Sorting 。

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

返回一个列表,其中包含所有根据mode 的条件,要么被rect 包含,要么与 相交的项。rect 采用视口坐标系。

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

这些项目按堆叠顺序从高到低排序(即,返回列表中的第一个项目位于最顶层)。

这是一个重载函数。

另请参阅 itemAt()、items()、mapToScene() 以及Sorting 。

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

重写了:QAbstractScrollArea::keyPressEvent(QKeyEvent *e)。

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

重写:QWidget::keyReleaseEvent(QKeyEvent *event)。

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

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

另请参阅 mapToScene()。

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

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

另请参阅 mapToScene()。

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

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

另请参阅 mapToScene()。

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

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

另请参阅 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))。

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

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

另请参阅 mapFromScene()。

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

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

注意:将point 处像素所覆盖的整个矩形映射到场景坐标系中,而非仅映射该点本身,有时会更实用。要实现这一点,可以调用 mapToScene(QRectpoint ,QSize(2, 2)))。

另请参阅 mapFromScene()。

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

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

另请参阅 mapFromScene()。

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

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

另请参阅 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))。

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

重写了:QAbstractScrollArea::mouseDoubleClickEvent(QMouseEvent *e)。

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

重写了:QAbstractScrollArea::mouseMoveEvent(QMouseEvent *e)。

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

重写了:QAbstractScrollArea::mousePressEvent(QMouseEvent *e)。

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

重写了:QAbstractScrollArea::mouseReleaseEvent(QMouseEvent *e)。

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

重写了:QAbstractScrollArea::paintEvent(QPaintEvent *event)。

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

使用painter ,将场景中以视图坐标系表示的source 矩形转换为以绘图设备坐标系表示的target 。该函数可用于将视图内容捕获到绘图设备(如QImage ,例如用于截屏)上,或用于打印到QPrinter。例如:

QGraphicsScene scene;
scene.addItem(someItem);
//...

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

QPrinter printer(QPrinter::HighResolution);
printer.setDocName("Example");
QPainter painter(&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.
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()` 来确定绘制内容。如果 `target ` 是空矩形,则将使用 `painter` 的绘图设备完整尺寸(例如,对于 QPrinter,即页面大小)。

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

另请参阅 QGraphicsScene::render()。

void QGraphicsView::resetCachedContent()

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

当backgroundBrush 或QGraphicsScene::backgroundBrush 属性发生变化时,系统会自动调用此函数;仅当您重写了QGraphicsScene::drawBackground() 或QGraphicsView::drawBackground() 方法以绘制自定义背景,且需要触发完全重绘时,才需手动调用此函数。

另请参阅 cacheMode()。

void QGraphicsView::resetTransform()

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

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

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

重写了:QAbstractScrollArea::resizeEvent(QResizeEvent *event)。

void QGraphicsView::rotate(qreal angle)

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

另请参阅 setTransform()、transform()、scale()、shear() 以及translate()。

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

当橡皮筋矩形发生变化时,会触发此信号。视口矩形由 `rubberBandRect` 指定。拖动起始位置和拖动结束位置以场景坐标形式通过 `fromScenePoint ` 和 `toScenePoint` 提供。

当橡皮筋选择结束时,将触发此信号,并传入空值。

另请参阅 rubberBandRect()。

QRect QGraphicsView::rubberBandRect() const

如果用户当前正在使用“橡皮筋”进行项目选择,则该函数返回当前的“橡皮筋”选区(以视口坐标表示)。当用户未使用“橡皮筋”时,该函数返回(空)QRectF()。

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

另请参阅 rubberBandSelectionMode 和rubberBandChanged()。

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

根据 (sx,sy) 对当前视图变换进行缩放。

另请参阅 setTransform()、transform()、rotate()、shear() 以及translate()。

QGraphicsScene *QGraphicsView::scene() const

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

另请参阅 setScene()。

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

重新实现了:QAbstractScrollArea::scrollContentsBy(int dx, int dy)。

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

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

另请参阅 optimizationFlags 。

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

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

另请参阅 renderHints 。

void QGraphicsView::setScene(QGraphicsScene *scene)

将当前场景设置为scene 。如果当前正在显示scene ,则此函数不执行任何操作。

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

该视图不会获取 `scene` 的所有权。

另请参阅 scene()。

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

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

如果combine 为true,则matrix 将与当前矩阵进行组合;否则,matrix 将替换当前矩阵。combine 默认值为false。

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

示例:

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

QGraphicsView view(&scene);
view.rotate(90); // the text is rendered with a 90 degree clockwise rotation
view.show();

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

另请参阅 transform()、resetTransform()、rotate()、scale()、shear() 以及translate()。

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

重写自:QAbstractScrollArea::setupViewport(QWidget *viewport)。

在调用setViewport()之后,QAbstractScrollArea 会调用此插槽。请在QGraphicsView 的子类中重写此函数,以便在使用新的视口widget 之前对其进行初始化。

另请参阅 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(QShowEvent *event)。

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

重新实现了:QAbstractScrollArea::sizeHint() const。

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 是新的场景矩形。如果视图已显式设置了场景矩形,则此函数不执行任何操作。

另请参阅 sceneRect 和QGraphicsScene::sceneRectChanged()。

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

重写了:QAbstractScrollArea::viewportEvent(QEvent *event)。

QTransform QGraphicsView::viewportTransform() const

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

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

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

重写了:QAbstractScrollArea::wheelEvent(QWheelEvent *e)。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.