Sur cette page

QGraphicsView Class

La classe QGraphicsView fournit un widget permettant d'afficher le contenu d'un site QGraphicsScene. Plus....

En-tête : #include <QGraphicsView>
CMake : find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake : QT += widgets
Héritages : QAbstractScrollArea

Types publics

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 }

Propriétés

Fonctions publiques

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

Fonctions publiques réimplémentées

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

Emplacements publics

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

Signaux

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

Fonctions protégées

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

Fonctions protégées réimplémentées

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

Slots protégés

virtual void setupViewport(QWidget *widget) override

Description détaillée

QGraphicsView visualise le contenu d'un site QGraphicsScene dans une fenêtre de visualisation déroulante. Pour créer une scène avec des éléments géométriques, voir la documentation de QGraphicsScene. QGraphicsView fait partie du cadre de visualisation graphique.

Pour visualiser une scène, vous commencez par construire un objet QGraphicsView, en passant l'adresse de la scène que vous souhaitez visualiser au constructeur de QGraphicsView. Vous pouvez également appeler setScene() pour définir la scène ultérieurement. Après avoir appelé show(), la vue défile par défaut jusqu'au centre de la scène et affiche tous les éléments visibles à cet endroit. Par exemple, vous pouvez faire défiler la vue jusqu'à n'importe quel point de la scène :

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

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

Vous pouvez explicitement faire défiler la scène jusqu'à n'importe quelle position en utilisant les barres de défilement ou en appelant centerOn(). En passant un point à centerOn(), QGraphicsView fera défiler sa fenêtre pour s'assurer que le point est centré dans la vue. Une surcharge est fournie pour le défilement jusqu'à QGraphicsItem, auquel cas QGraphicsView veillera à ce que le centre de l'élément soit centré dans la vue. Si tout ce que vous voulez, c'est vous assurer qu'une certaine zone est visible (mais pas nécessairement centrée), vous pouvez appeler ensureVisible() à la place.

QGraphicsView peut être utilisé pour visualiser une scène entière ou seulement une partie de celle-ci. La zone visualisée est par défaut détectée automatiquement lorsque la vue est affichée pour la première fois (en appelant QGraphicsScene::itemsBoundingRect()). Pour définir vous-même le rectangle de la zone visualisée, vous pouvez appeler setSceneRect(). Les plages des barres de défilement seront alors ajustées de manière appropriée. Notez que, bien que la scène prenne en charge une taille pratiquement illimitée, la plage des barres de défilement ne dépassera jamais la plage d'un entier (INT_MIN, INT_MAX).

QGraphicsView visualise la scène en appelant render(). Par défaut, les éléments sont dessinés sur la fenêtre de visualisation à l'aide d'un QPainter régulier et en utilisant les indications de rendu par défaut. Pour modifier les indices de rendu par défaut que QGraphicsView transmet à QPainter lorsqu'il peint des éléments, vous pouvez appeler setRenderHints().

Par défaut, QGraphicsView fournit une adresse QWidget régulière pour le widget viewport. Vous pouvez accéder à ce widget en appelant viewport(), ou vous pouvez le remplacer en appelant setViewport(). Pour effectuer un rendu à l'aide d'OpenGL, il suffit d'appeler setViewport(new QOpenGLWidget). QGraphicsView est propriétaire du widget viewport.

QGraphicsView supporte les transformations affines, en utilisant QTransform. Vous pouvez soit passer une matrice à setTransform(), soit appeler l'une des fonctions de commodité rotate(), scale(), translate() ou shear(). Les deux transformations les plus courantes sont la mise à l'échelle, utilisée pour effectuer un zoom, et la rotation. QGraphicsView maintient le centre de la vue fixe pendant une transformation. En raison de l'alignement de la scène (setAlignment()), la translation de la vue n'aura aucun impact visuel.

Vous pouvez interagir avec les éléments de la scène en utilisant la souris et le clavier. QGraphicsView traduit les événements de la souris et du clavier en événements de scène (événements qui héritent de QGraphicsSceneEvent,), et les transmet à la scène visualisée. En fin de compte, c'est l'élément individuel qui gère les événements et y réagit. Par exemple, si vous cliquez sur un élément sélectionnable, l'élément indiquera généralement à la scène qu'il a été sélectionné et se redessinera pour afficher un rectangle de sélection. De même, si vous cliquez et faites glisser la souris pour déplacer un élément mobile, c'est l'élément qui gère les mouvements de la souris et qui se déplace lui-même. L'interaction entre les éléments est activée par défaut et vous pouvez la désactiver en appelant setInteractive().

Vous pouvez également fournir votre propre interaction de scène personnalisée en créant une sous-classe de QGraphicsView et en réimplémentant les gestionnaires d'événements de la souris et des touches. Pour simplifier l'interaction programmatique avec les éléments de la vue, QGraphicsView fournit les fonctions de mappage mapToScene() et mapFromScene(), ainsi que les accesseurs d'éléments items() et itemAt(). Ces fonctions vous permettent de mapper des points, des rectangles, des polygones et des chemins entre les coordonnées de la vue et les coordonnées de la scène, et de trouver des éléments sur la scène à l'aide des coordonnées de la vue.

Lors de l'utilisation d'un site QOpenGLWidget comme fenêtre de visualisation, le rendu stéréoscopique est pris en charge. Il s'effectue selon le même schéma que celui de QOpenGLWidget::paintGL. Pour l'activer, activez l'indicateur QSurfaceFormat::StereoBuffers. En raison de la manière dont l'indicateur est géré en interne, activez l'indicateur QSurfaceFormat::StereoBuffers globalement avant que la fenêtre ne soit créée à l'aide de QSurfaceFormat::setDefaultFormat(). Si l'indicateur est activé et qu'il existe un support matériel pour le rendu stéréoscopique, alors drawBackground() et drawForeground() seront déclenchés deux fois par image. Appelez QOpenGLWidget::currentTargetBuffer() pour demander quel tampon est en train d'être dessiné.

Grille de puces électroniques

Remarque : l'utilisation d'une fenêtre OpenGL limite la possibilité d'utiliser QGraphicsProxyWidget. Toutes les combinaisons de widgets et de styles ne peuvent pas être prises en charge avec une telle configuration. Vous devez tester soigneusement votre interface utilisateur et procéder aux ajustements nécessaires.

Voir également QGraphicsScene, QGraphicsItem, et QGraphicsSceneEvent.

Documentation des types de membres

enum QGraphicsView::CacheModeFlag
flags QGraphicsView::CacheMode

Cette énumération décrit les drapeaux que vous pouvez définir pour le mode de cache d'une page QGraphicsView.

ConstanteValeurDescription
QGraphicsView::CacheNone0x0Toutes les peintures sont réalisées directement sur la fenêtre de visualisation.
QGraphicsView::CacheBackground0x1L'arrière-plan est mis en cache. Cela concerne à la fois les arrière-plans personnalisés et les arrière-plans basés sur la propriété backgroundBrush. Lorsque ce drapeau est activé, QGraphicsView alloue une pixmap de la taille totale de la fenêtre de visualisation.

Le type CacheMode est un typedef pour QFlags<CacheModeFlag>. Il stocke une combinaison OU de valeurs CacheModeFlag.

Voir également cacheMode.

enum QGraphicsView::DragMode

Cette énumération décrit l'action par défaut de la vue lorsqu'on appuie sur la souris et qu'on la fait glisser sur la fenêtre d'affichage.

ConstanteValeurDescription de l'action
QGraphicsView::NoDrag0Rien ne se produit ; l'événement souris est ignoré.
QGraphicsView::ScrollHandDrag1Le curseur se transforme en main et le fait de faire glisser la souris fait défiler les barres de défilement. Ce mode fonctionne aussi bien en mode interactive qu'en mode non interactif.
QGraphicsView::RubberBandDrag2Un élastique apparaît. En faisant glisser la souris, la géométrie de l'élastique est définie et tous les éléments couverts par l'élastique sont sélectionnés. Ce mode est désactivé pour les vues non interactives.

Voir également dragMode et QGraphicsScene::setSelectionArea().

enum QGraphicsView::OptimizationFlag
flags QGraphicsView::OptimizationFlags

Cette énumération décrit les drapeaux que vous pouvez activer pour améliorer les performances de rendu dans QGraphicsView. Par défaut, aucun de ces drapeaux n'est activé. Notez que la mise en place d'un drapeau impose généralement un effet secondaire, et que cet effet peut varier entre les dispositifs de peinture et les plates-formes.

ConstanteValeurDescription
QGraphicsView::DontSavePainterState0x1Lors du rendu, QGraphicsView protège l'état du peintre (voir QPainter::save()) lors du rendu de l'arrière-plan ou du premier plan, et lors du rendu de chaque élément. Cela vous permet de laisser le peintre dans un état modifié (c'est-à-dire que vous pouvez appeler QPainter::setPen() ou QPainter::setBrush() sans restaurer l'état après la peinture). Cependant, si les éléments restaurent systématiquement l'état, vous devez activer ce drapeau pour empêcher QGraphicsView de faire de même.
QGraphicsView::DontAdjustForAntialiasing0x2Désactive l'ajustement automatique de l'anticrénelage de QGraphicsView pour les zones exposées. Les éléments qui rendent des lignes anticrénelées sur les limites de leur QGraphicsItem::boundingRect() peuvent finir par rendre des parties de la ligne à l'extérieur. Pour éviter les artefacts de rendu, QGraphicsView étend toutes les régions exposées de 2 pixels dans toutes les directions. Si vous activez ce drapeau, QGraphicsView n'effectuera plus ces ajustements, réduisant ainsi les zones qui doivent être redessinées, ce qui améliore les performances. Un effet secondaire courant est que les éléments qui dessinent avec l'anticrénelage peuvent laisser des traces de peinture sur la scène lorsqu'ils sont déplacés.
QGraphicsView::IndirectPainting0x4Depuis Qt 4.6, rétablit l'ancien algorithme de peinture qui appelle QGraphicsView::drawItems() et QGraphicsScene::drawItems(). À utiliser uniquement pour la compatibilité avec l'ancien code.

Le type OptimizationFlags est un typedef pour QFlags<OptimizationFlag>. Il stocke une combinaison OR de valeurs OptimizationFlag.

enum QGraphicsView::ViewportAnchor

Cette énumération décrit les ancres possibles que QGraphicsView peut utiliser lorsque l'utilisateur redimensionne la vue ou lorsqu'elle est transformée.

ConstanteValeurDescription de l'ancrage
QGraphicsView::NoAnchor0Pas d'ancrage, c'est-à-dire que la vue laisse la position de la scène inchangée.
QGraphicsView::AnchorViewCenter1Le point de la scène au centre de la vue est utilisé comme point d'ancrage.
QGraphicsView::AnchorUnderMouse2Le point situé sous la souris est utilisé comme point d'ancrage.

Voir également resizeAnchor et transformationAnchor.

enum QGraphicsView::ViewportUpdateMode

Cette énumération décrit la manière dont QGraphicsView met à jour sa fenêtre d'affichage lorsque le contenu de la scène change ou est exposé.

ConstanteValeurDescription
QGraphicsView::FullViewportUpdate0Lorsqu'une partie visible de la scène change ou est réexposée, QGraphicsView met à jour l'ensemble de la fenêtre de visualisation. Cette approche est la plus rapide lorsque QGraphicsView passe plus de temps à déterminer ce qu'il faut dessiner qu'à dessiner (par exemple, lorsque de très nombreux petits éléments sont mis à jour de manière répétée). C'est le mode de mise à jour préféré pour les fenêtres qui ne supportent pas les mises à jour partielles, comme QOpenGLWidget, et pour les fenêtres qui doivent désactiver l'optimisation du défilement.
QGraphicsView::MinimalViewportUpdate1QGraphicsView détermine la région minimale de la fenêtre qui doit être redessinée, ce qui minimise le temps passé à dessiner en évitant de redessiner les zones qui n'ont pas changé. Il s'agit du mode par défaut de QGraphicsView. Bien que cette approche fournisse les meilleures performances en général, s'il y a beaucoup de petits changements visibles sur la scène, QGraphicsView peut passer plus de temps à trouver l'approche minimale qu'à dessiner.
QGraphicsView::SmartViewportUpdate2QGraphicsView tentera de trouver un mode de mise à jour optimal en analysant les zones qui nécessitent un nouveau dessin.
QGraphicsView::BoundingRectViewportUpdate4Le rectangle de délimitation de tous les changements dans la fenêtre de visualisation sera redessiné. Ce mode présente l'avantage que QGraphicsView ne recherche les changements que dans une seule région, minimisant ainsi le temps passé à déterminer ce qui doit être redessiné. L'inconvénient est que les zones qui n'ont pas changé doivent également être redessinées.
QGraphicsView::NoViewportUpdate3QGraphicsView ne mettra jamais à jour sa fenêtre de visualisation lorsque la scène change ; l'utilisateur est censé contrôler toutes les mises à jour. Ce mode désactive tous les tests (potentiellement lents) de visibilité des éléments dans QGraphicsView, et convient aux scènes qui nécessitent une fréquence d'images fixe, ou lorsque la fenêtre de visualisation est mise à jour de manière externe.

Voir également viewportUpdateMode.

Documentation sur les propriétés

alignment : Qt::Alignment

Cette propriété définit l'alignement de la scène dans la vue lorsque toute la scène est visible.

Si toute la scène est visible dans la vue (c'est-à-dire qu'il n'y a pas de barres de défilement visibles), l'alignement de la vue décidera de l'endroit où la scène sera rendue dans la vue. Par exemple, si l'alignement est Qt::AlignCenter, ce qui est la valeur par défaut, la scène sera centrée dans la vue, et si l'alignement est (Qt::AlignLeft | Qt::AlignTop), la scène sera rendue dans le coin supérieur gauche de la vue.

Fonctions d'accès :

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

backgroundBrush : QBrush

Cette propriété contient la brosse d'arrière-plan de la scène.

Cette propriété définit la brosse d'arrière-plan de la scène dans cette vue. Elle est utilisée pour remplacer l'arrière-plan de la scène et définit le comportement de drawBackground(). Pour fournir un dessin d'arrière-plan personnalisé pour cette vue, vous pouvez réimplémenter drawBackground() à la place.

Par défaut, cette propriété contient une brosse avec le motif Qt::NoBrush.

Fonctions d'accès :

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

Voir également QGraphicsScene::backgroundBrush et foregroundBrush.

cacheMode : CacheMode

Cette propriété définit les parties de la vue qui sont mises en cache

QGraphicsView peut mettre en cache un contenu pré-rendu dans une page QPixmap, qui est ensuite dessiné dans la fenêtre de visualisation. L'objectif de cette mise en cache est d'accélérer le temps de rendu total pour les zones dont le rendu est lent. Les arrière-plans à texture, à dégradé et à mélange alpha, par exemple, peuvent être sensiblement lents à rendre, en particulier avec une vue transformée. L'option CacheBackground active la mise en cache de l'arrière-plan de la vue. Par exemple :

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

Le cache est invalidé chaque fois que la vue est transformée. Cependant, lors du défilement, seule une invalidation partielle est nécessaire.

Par défaut, rien n'est mis en cache.

Fonctions d'accès :

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

Voir aussi resetCachedContent() et QPixmapCache.

dragMode : DragMode

Cette propriété définit le comportement à adopter lorsque l'utilisateur fait glisser la souris sur la scène alors que le bouton gauche de la souris est enfoncé.

Cette propriété définit ce qui doit se passer lorsque l'utilisateur clique sur l'arrière-plan de la scène et fait glisser la souris (par exemple, faire défiler le contenu de la fenêtre de visualisation à l'aide du curseur de la main qui pointe, ou sélectionner plusieurs éléments à l'aide d'un élastique). La valeur par défaut, NoDrag, ne fait rien.

Ce comportement n'affecte que les clics de souris qui ne sont pas gérés par un élément. Vous pouvez définir un comportement personnalisé en créant une sous-classe de QGraphicsView et en réimplémentant mouseMoveEvent().

Fonctions d'accès :

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

foregroundBrush : QBrush

Cette propriété contient la brosse de premier plan de la scène.

Cette propriété définit la brosse d'avant-plan de la scène dans cette vue. Elle est utilisée pour remplacer le premier plan de la scène et définit le comportement de drawForeground(). Pour fournir un dessin d'avant-plan personnalisé pour cette vue, vous pouvez réimplémenter drawForeground() à la place.

Par défaut, cette propriété contient une brosse avec le motif Qt::NoBrush.

Fonctions d'accès :

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

Voir également QGraphicsScene::foregroundBrush et backgroundBrush.

interactive : bool

Cette propriété indique si la vue autorise l'interaction avec la scène.

Si elle est activée, cette vue est configurée pour permettre l'interaction avec la scène. Dans le cas contraire, cette vue ne permet pas l'interaction et les événements liés à la souris ou aux touches sont ignorés (c'est-à-dire qu'elle agit comme une vue en lecture seule).

Par défaut, cette propriété est true.

Fonctions d'accès :

bool isInteractive() const
void setInteractive(bool allowed)

optimizationFlags : OptimizationFlags

des drapeaux qui peuvent être utilisés pour ajuster les performances de QGraphicsView.

QGraphicsView utilise l'écrêtage, des ajustements supplémentaires du rectangle de délimitation et certaines autres aides pour améliorer la qualité du rendu et les performances pour les scènes graphiques courantes. Cependant, en fonction de la plate-forme cible, de la scène et de la fenêtre utilisée, certaines de ces opérations peuvent dégrader les performances.

L'effet varie d'un drapeau à l'autre ; voir la documentation de OptimizationFlags pour plus de détails.

Par défaut, aucun indicateur d'optimisation n'est activé.

Fonctions d'accès :

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

Voir également setOptimizationFlag().

renderHints : QPainter::RenderHints

Cette propriété contient les indications de rendu par défaut pour la vue

Ces indications sont utilisées pour initialiser QPainter avant que chaque élément visible ne soit dessiné. QPainter utilise les indications de rendu pour activer des fonctions de rendu telles que l'anticrénelage et la transformation en douceur de la pixmap.

QPainter::TextAntialiasing est activé par défaut.

Exemple :

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

QGraphicsView view(&scene);
view.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
view.show();

Fonctions d'accès :

QPainter::RenderHints renderHints() const
void setRenderHints(QPainter::RenderHints hints)

resizeAnchor : ViewportAnchor

comment la vue doit positionner la scène lorsque la vue est redimensionnée.

QGraphicsView utilise cette propriété pour décider comment positionner la scène dans la fenêtre d'affichage lorsque la taille du widget de la fenêtre d'affichage change. Le comportement par défaut, NoAnchor, laisse la position de la scène inchangée lors d'un redimensionnement ; le coin supérieur gauche de la vue semblera être ancré lors du redimensionnement.

Notez que l'effet de cette propriété est perceptible lorsque seule une partie de la scène est visible (c'est-à-dire lorsqu'il y a des barres de défilement). Dans le cas contraire, si toute la scène tient dans la vue, QGraphicsScene utilise l'alignement de la vue pour positionner la scène dans la vue.

Fonctions d'accès :

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

Voir également alignement et transformationAnchor.

rubberBandSelectionMode : Qt::ItemSelectionMode

Cette propriété définit le comportement de sélection des éléments à l'aide d'un rectangle de sélection élastique.

Cette propriété définit la manière dont les éléments sont sélectionnés lorsque l'on utilise le mode de glissement RubberBandDrag.

La valeur par défaut est Qt::IntersectsItemShape; tous les éléments dont la forme croise ou est contenue par l'élastique sont sélectionnés.

Fonctions d'accès :

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

Voir également dragMode, items() et rubberBandRect().

sceneRect : QRectF

Cette propriété contient la zone de la scène visualisée par cette vue.

Le rectangle de scène définit l'étendue de la scène et, dans le cas de la vue, il s'agit de la zone de la scène dans laquelle vous pouvez naviguer à l'aide des barres de défilement.

Si elle n'est pas définie, ou si une valeur null QRectF est définie, cette propriété a la même valeur que QGraphicsScene::sceneRect, et elle change avec QGraphicsScene::sceneRect. Sinon, le rectangle de scène de la vue n'est pas affecté par la scène.

Notez que, bien que la scène prenne en charge une taille pratiquement illimitée, la plage des barres de défilement ne dépassera jamais la plage d'un entier (INT_MIN, INT_MAX). Lorsque la scène est plus grande que les valeurs des barres de défilement, vous pouvez choisir d'utiliser translate() pour naviguer dans la scène.

Par défaut, cette propriété contient un rectangle à l'origine dont la largeur et la hauteur sont nulles.

Fonctions d'accès :

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

Voir aussi QGraphicsScene::sceneRect.

transformationAnchor : ViewportAnchor

comment la vue doit positionner la scène lors des transformations.

QGraphicsView utilise cette propriété pour décider comment positionner la scène dans la fenêtre de visualisation lorsque la matrice de transformation change et que le système de coordonnées de la vue est transformé. Le comportement par défaut, AnchorViewCenter, garantit que le point de la scène au centre de la vue reste inchangé pendant les transformations (par exemple, lors d'une rotation, la scène semblera tourner autour du centre de la vue).

Notez que l'effet de cette propriété est perceptible lorsque seule une partie de la scène est visible (c'est-à-dire lorsqu'il y a des barres de défilement). Dans le cas contraire, si toute la scène tient dans la vue, QGraphicsScene utilise l'alignement de la vue pour positionner la scène dans la vue.

Fonctions d'accès :

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

Voir également alignement et resizeAnchor.

viewportUpdateMode : ViewportUpdateMode

la manière dont la fenêtre de visualisation doit mettre à jour son contenu.

QGraphicsView utilise cette propriété pour décider comment mettre à jour les zones de la scène qui ont été réexposées ou modifiées. En général, il n'est pas nécessaire de modifier cette propriété, mais dans certains cas, cela peut améliorer les performances de rendu. Voir la documentation ViewportUpdateMode pour plus de détails.

La valeur par défaut est MinimalViewportUpdate, où QGraphicsView met à jour une zone aussi petite que possible de la fenêtre lorsque le contenu change.

Fonctions d'accès :

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

Voir également ViewportUpdateMode et cacheMode.

Documentation sur les fonctions membres

QGraphicsView::QGraphicsView(QWidget *parent = nullptr)

Construit une QGraphicsView. parent est transmis au constructeur de QWidget.

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

Construit un QGraphicsView et définit la scène visualisée à scene. parent est transmis au constructeur de QWidget.

[virtual noexcept] QGraphicsView::~QGraphicsView()

Détruit l'objet QGraphicsView.

void QGraphicsView::centerOn(const QPointF &pos)

Fait défiler le contenu de la fenêtre de visualisation pour s'assurer que la coordonnée de scène pos, est centrée dans la vue.

Comme pos est une coordonnée à virgule flottante et que les barres de défilement fonctionnent sur des coordonnées entières, le centrage n'est qu'une approximation.

Remarque : si l'élément est proche ou en dehors de la bordure, il sera visible dans la vue, mais ne sera pas centré.

Voir également ensureVisible().

void QGraphicsView::centerOn(const QGraphicsItem *item)

Fait défiler le contenu de la fenêtre de visualisation pour s'assurer que item est centré dans la fenêtre.

Il s'agit d'une fonction surchargée.

Voir également ensureVisible().

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

Cette fonction est fournie pour des raisons de commodité. Elle équivaut à appeler centerOn(QPointF(x, y)).

Il s'agit d'une fonction surchargée.

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

Réimplémente : QAbstractScrollArea::contextMenuEvent(QContextMenuEvent *e).

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

Réimplémente : QAbstractScrollArea::dragEnterEvent(QDragEnterEvent *event).

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

Réimplémente : QAbstractScrollArea::dragLeaveEvent(QDragLeaveEvent *event).

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

Réimplémente : QAbstractScrollArea::dragMoveEvent(QDragMoveEvent *event).

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

Dessine l'arrière-plan de la scène à l'aide de painter, avant que les éléments et le premier plan ne soient dessinés. Réimplémentez cette fonction pour fournir un arrière-plan personnalisé à cette vue.

Si vous souhaitez simplement définir une couleur, une texture ou un dégradé pour l'arrière-plan, vous pouvez appeler setBackgroundBrush() à la place.

Toutes les peintures sont réalisées en coordonnées de scène. rect est le rectangle exposé.

L'implémentation par défaut remplit rect en utilisant le pinceau de la vue backgroundBrush. Si aucun pinceau de ce type n'est défini (par défaut), la fonction drawBackground() de la scène est appelée à la place.

Voir aussi drawForeground() et QGraphicsScene::drawBackground().

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

Dessine l'avant-plan de la scène à l'aide de painter, après que l'arrière-plan et tous les éléments ont été dessinés. Réimplémentez cette fonction pour obtenir un premier plan personnalisé pour cette vue.

Si vous souhaitez simplement définir une couleur, une texture ou un dégradé pour le premier plan, vous pouvez appeler setForegroundBrush() à la place.

Toutes les peintures sont réalisées en coordonnées de scène. rect est le rectangle exposé.

L'implémentation par défaut remplit rect en utilisant le pinceau de la vue foregroundBrush. Si aucun pinceau de ce type n'est défini (par défaut), la fonction drawForeground() de la scène est appelée à la place.

Voir aussi drawBackground() et QGraphicsScene::drawForeground().

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

Réimplémente : QAbstractScrollArea::dropEvent(QDropEvent *event).

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

Fait défiler le contenu de la fenêtre de visualisation de manière à ce que le rectangle de scène rect soit visible, avec des marges spécifiées en pixels par xmargin et ymargin. Si le rectangle spécifié ne peut être atteint, le contenu est défilé jusqu'à la position valide la plus proche. La valeur par défaut des deux marges est de 50 pixels.

Voir aussi centerOn().

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

Fait défiler le contenu de la fenêtre de visualisation de manière à ce que le centre de l'élément item soit visible, avec des marges spécifiées en pixels par xmargin et ymargin. Si le point spécifié ne peut être atteint, le contenu est défilé jusqu'à la position valide la plus proche. La valeur par défaut des deux marges est de 50 pixels.

Il s'agit d'une fonction surchargée.

Voir aussi centerOn().

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

Cette fonction est fournie pour des raisons de commodité. Elle équivaut à appeler ensureVisible(QRectF(x, y, w, h), xmargin, ymargin).

Il s'agit d'une fonction surchargée.

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

Réimplémente : QAbstractScrollArea::event(QEvent *event).

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

Met à l'échelle la matrice de la vue et fait défiler les barres de défilement pour s'assurer que le rectangle de scène rect s'inscrit dans la fenêtre de visualisation. rect doit se trouver à l'intérieur du rectangle de scène ; dans le cas contraire, fitInView() ne peut garantir que l'ensemble du rectangle est visible.

Cette fonction conserve la rotation, la translation ou le cisaillement de la vue. La vue est mise à l'échelle en fonction de aspectRatioMode. rect sera centré dans la vue s'il n'est pas trop serré.

Il est courant d'appeler fitInView() à partir d'une réimplémentation de resizeEvent(), pour s'assurer que la scène entière, ou des parties de la scène, s'adapte automatiquement à la nouvelle taille de la fenêtre de visualisation lorsque la vue est redimensionnée. Notez cependant que l'appel à fitInView() à partir de resizeEvent() peut conduire à une récursion de redimensionnement indésirable, si la nouvelle transformation bascule l'état automatique des barres de défilement. Vous pouvez activer ou désactiver la politique des barres de défilement pour éviter cela (voir horizontalScrollBarPolicy() et verticalScrollBarPolicy()).

Si rect est vide ou si la fenêtre de visualisation est trop petite, cette fonction ne fera rien.

Voir également setTransform(), ensureVisible() et centerOn().

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

S'assure que item s'adapte parfaitement à la vue, en la redimensionnant en fonction de aspectRatioMode.

Il s'agit d'une fonction surchargée.

Voir aussi ensureVisible() et centerOn().

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

Cette fonction de commodité équivaut à appeler fitInView(QRectF(x, y, w, h), aspectRatioMode).

Il s'agit d'une fonction surchargée.

Voir aussi ensureVisible() et centerOn().

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

Réimplémente : QWidget::focusInEvent(QFocusEvent *event).

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

Réimplémente : QWidget::focusNextPrevChild(bool next).

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

Réimplémente : QWidget::focusOutEvent(QFocusEvent *event).

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

Réimplémente : QWidget::inputMethodEvent(QInputMethodEvent *event).

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

Réimplémente : QWidget::inputMethodQuery(Qt::InputMethodQuery query) const.

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

Invalide et planifie un nouveau dessin de layers à l'intérieur de rect. rect est en coordonnées de scène. Tout contenu mis en cache pour layers à l'intérieur de rect est inconditionnellement invalidé et redessiné.

Vous pouvez appeler cette fonction pour informer QGraphicsView des modifications apportées à l'arrière-plan ou à l'avant-plan de la scène. Elle est généralement utilisée pour les scènes dont l'arrière-plan est constitué de tuiles, afin de notifier les changements lorsque QGraphicsView a activé la mise en cache de l'arrière-plan.

Notez que QGraphicsView ne prend actuellement en charge que la mise en cache de l'arrière-plan (voir QGraphicsView::CacheBackground). Cette fonction est équivalente à l'appel de update() si une couche autre que QGraphicsScene::BackgroundLayer est transmise.

Voir aussi QGraphicsScene::invalidate() et update().

bool QGraphicsView::isTransformed() const

Renvoie true si la vue est transformée (c'est-à-dire si une transformation non identique a été attribuée ou si les barres de défilement sont ajustées).

Voir aussi setTransform(), horizontalScrollBar() et verticalScrollBar().

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

Renvoie l'élément situé à la position pos, en coordonnées de la fenêtre. S'il y a plusieurs éléments à cette position, cette fonction renvoie l'élément le plus élevé.

Exemple :

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.");
    } }

Voir aussi items() et Sorting.

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

Cette fonction est fournie pour des raisons de commodité. Elle équivaut à appeler itemAt(QPoint(x, y)).

Il s'agit d'une fonction surchargée.

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

Renvoie une liste de tous les éléments de la scène associée, dans l'ordre d'empilement décroissant (c'est-à-dire que le premier élément de la liste renvoyée est l'élément le plus élevé).

Voir aussi QGraphicsScene::items() et Sorting.

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

Renvoie une liste de tous les éléments situés à la position pos dans la vue. Les éléments sont listés dans l'ordre d'empilement décroissant (c'est-à-dire que le premier élément de la liste est l'élément le plus haut, et le dernier élément est l'élément le plus bas). pos est en coordonnées de la fenêtre d'affichage.

Cette fonction est le plus souvent appelée à partir de gestionnaires d'événements de souris dans une sous-classe de QGraphicsView. pos est en coordonnées d'affichage non transformées, tout comme QMouseEvent::position().

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

Voir aussi QGraphicsScene::items() et Sorting.

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

Cette fonction est fournie pour des raisons de commodité. Elle équivaut à appeler items(QPoint(x, y)).

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

Cette fonction de commodité équivaut à appeler items(QRectF(x, y, w, h), mode).

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

Renvoie une liste de tous les éléments qui, en fonction de mode, sont contenus dans path ou l'intersectent. path est en coordonnées d'affichage.

La valeur par défaut de mode est Qt::IntersectsItemShape; tous les éléments dont la forme exacte intersecte ou est contenue par path sont renvoyés.

Il s'agit d'une fonction surchargée.

Voir aussi itemAt(), items(), mapToScene() et Sorting.

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

Renvoie une liste de tous les éléments qui, en fonction de mode, sont contenus dans polygon ou l'intersectent. polygon est en coordonnées d'affichage.

La valeur par défaut de mode est Qt::IntersectsItemShape; tous les éléments dont la forme exacte intersecte ou est contenue par polygon sont renvoyés.

Les éléments sont triés par ordre d'empilement décroissant (c'est-à-dire que le premier élément de la liste renvoyée est l'élément le plus élevé).

Il s'agit d'une fonction surchargée.

Voir aussi itemAt(), items(), mapToScene() et Sorting.

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

Renvoie une liste de tous les éléments qui, en fonction de mode, sont contenus dans rect ou l'intersectent. rect est en coordonnées d'affichage.

La valeur par défaut de mode est Qt::IntersectsItemShape; tous les éléments dont la forme exacte intersecte ou est contenue par rect sont renvoyés.

Les éléments sont triés par ordre d'empilement décroissant (c'est-à-dire que le premier élément de la liste renvoyée est l'élément le plus élevé).

Il s'agit d'une fonction surchargée.

Voir aussi itemAt(), items(), mapToScene() et Sorting.

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

Réimplémente : QAbstractScrollArea::keyPressEvent(QKeyEvent *e).

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

Réimplémente : QWidget::keyReleaseEvent(QKeyEvent *event).

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

Renvoie le chemin de peinture des coordonnées de la scène path vers un chemin de peinture des coordonnées de la fenêtre.

Voir également mapToScene().

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

Renvoie les coordonnées de la scène point aux coordonnées de la fenêtre.

Voir également mapToScene().

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

Renvoie le polygone de coordonnées de la scène polygon vers un polygone de coordonnées de la fenêtre.

Voir aussi mapToScene().

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

Renvoie le rectangle de scène rect à un polygone de coordonnées de la fenêtre.

Voir aussi mapToScene().

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

Cette fonction est fournie pour des raisons de commodité. Elle équivaut à appeler mapFromScene(QPointF(x, y)).

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

Cette fonction est fournie pour des raisons de commodité. Elle équivaut à appeler mapFromScene(QRectF(x, y, w, h)).

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

Renvoie le chemin de peinture de la fenêtre path mappé à un chemin de peinture de coordonnées de scène.

Voir également mapFromScene().

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

Renvoie les coordonnées de la fenêtre de visualisation point en coordonnées de scène.

Remarque : il peut être utile de mapper l'ensemble du rectangle couvert par le pixel à point au lieu du point lui-même. Pour ce faire, vous pouvez appeler mapToScene(QRect(point, QSize(2, 2))).

Voir également mapFromScene().

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

Renvoie le polygone de la fenêtre de visualisation polygon mappé sur un polygone de coordonnées de scène.

Voir aussi mapFromScene().

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

Renvoie le rectangle de la fenêtre de visualisation rect mappé sur un polygone de coordonnées de scène.

Voir aussi mapFromScene().

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

Cette fonction est fournie pour des raisons de commodité. Elle équivaut à appeler mapToScene(QPoint(x, y)).

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

Cette fonction est fournie pour des raisons de commodité. Elle équivaut à appeler mapToScene(QRect(x, y, w, h)).

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

Réimplémente : QAbstractScrollArea::mouseDoubleClickEvent(QMouseEvent *e).

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

Réimplémente : QAbstractScrollArea::mouseMoveEvent(QMouseEvent *e).

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

Réimplémente : QAbstractScrollArea::mousePressEvent(QMouseEvent *e).

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

Réimplémente : QAbstractScrollArea::mouseReleaseEvent(QMouseEvent *e).

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

Réimplémente : QAbstractScrollArea::paintEvent(QPaintEvent *event).

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

Rend le rectangle source, qui est en coordonnées de vue, de la scène à target, qui est en coordonnées de périphérique de peinture, en utilisant painter. Cette fonction est utile pour capturer le contenu de la vue sur un périphérique de peinture, tel que QImage (par exemple, pour faire une capture d'écran), ou pour l'imprimer sur QPrinter. Par exemple :

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

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

QPrinter printer(QPrinter::HighResolution);
printer.setPageSize(QPrinter::A4);
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));

Si source est un rectangle nul, cette fonction utilisera viewport()->rect() pour déterminer ce qu'il faut dessiner. Si target est un rectangle nul, les dimensions complètes du périphérique de peinture de painter(par exemple, pour une imprimante QPrinter, la taille de la page) seront utilisées.

Le contenu du rect source sera transformé conformément à aspectRatioMode pour s'adapter au rect cible. Par défaut, le rapport d'aspect est conservé, et source est mis à l'échelle pour tenir dans target.

Voir également QGraphicsScene::render().

void QGraphicsView::resetCachedContent()

Réinitialise tout contenu mis en cache. L'appel de cette fonction efface le cache de QGraphicsView. Si le mode de cache actuel est CacheNone, cette fonction ne fait rien.

Cette fonction est appelée automatiquement lorsque les propriétés backgroundBrush ou QGraphicsScene::backgroundBrush changent ; vous ne devez appeler cette fonction que si vous avez réimplémenté QGraphicsScene::drawBackground() ou QGraphicsView::drawBackground() pour dessiner un arrière-plan personnalisé et que vous devez déclencher un redessin complet.

Voir aussi cacheMode().

void QGraphicsView::resetTransform()

Réinitialise la transformation de la vue à la matrice d'identité.

Voir aussi transform() et setTransform().

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

Réimplémente : QAbstractScrollArea::resizeEvent(QResizeEvent *event).

void QGraphicsView::rotate(qreal angle)

Fait pivoter la transformation de la vue actuelle angle degrés dans le sens des aiguilles d'une montre.

Voir aussi setTransform(), transform(), scale(), shear() et translate().

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

Ce signal est émis lorsque le rectangle de l'élastique est modifié. Le rectangle de la fenêtre est spécifié par rubberBandRect. La position de départ et la position de fin du déplacement sont fournies dans les points de scène par fromScenePoint et toScenePoint.

Lorsque la sélection élastique se termine, ce signal est émis avec des valeurs nulles.

Voir aussi rubberBandRect().

QRect QGraphicsView::rubberBandRect() const

Cette fonction renvoie la zone actuelle de l'élastique (en coordonnées de la fenêtre) si l'utilisateur est en train d'effectuer une sélection d'éléments avec l'élastique. Lorsque l'utilisateur n'utilise pas l'élastique, cette fonction renvoie (un null) QRectF().

Notez qu'une partie de ce QRect peut se trouver en dehors de la fenêtre de visualisation. Elle peut par exemple contenir des valeurs négatives.

Voir également rubberBandSelectionMode et rubberBandChanged().

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

Met à l'échelle la transformation de la vue actuelle par (sx, sy).

Voir aussi setTransform(), transform(), rotate(), shear() et translate().

QGraphicsScene *QGraphicsView::scene() const

Renvoie un pointeur sur la scène actuellement visualisée dans la vue. Si aucune scène n'est actuellement visualisée, nullptr est renvoyé.

Voir aussi setScene().

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

Réimplémente : QAbstractScrollArea::scrollContentsBy(int dx, int dy).

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

Active flag si enabled est vrai ; sinon désactive flag.

Voir aussi optimizationFlags.

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

Si enabled est vrai, l'indice de rendu hint est activé, sinon il est désactivé.

Voir également renderHints.

void QGraphicsView::setScene(QGraphicsScene *scene)

Définit la scène actuelle sur scene. Si scene est déjà en cours de visualisation, cette fonction ne fait rien.

Lorsqu'une scène est définie sur une vue, le signal QGraphicsScene::changed() est automatiquement connecté à l'emplacement updateScene() de cette vue, et les barres de défilement de la vue sont ajustées pour s'adapter à la taille de la scène.

La vue n'est pas propriétaire de scene.

Voir aussi scene().

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

Définit la matrice de transformation actuelle de la vue à matrix.

Si combine est vrai, matrix est combiné à la matrice actuelle ; sinon, matrix remplace la matrice actuelle. combine est faux par défaut.

La matrice de transformation transforme la scène en coordonnées de la vue. En utilisant la transformation par défaut, fournie par la matrice d'identité, un pixel dans la vue représente une unité dans la scène (par exemple, un élément rectangulaire de 10x10 est dessiné en utilisant 10x10 pixels dans la vue). Si une matrice d'échelle 2x2 est appliquée, la scène sera dessinée en 1:2 (par exemple, un élément rectangulaire de 10x10 est alors dessiné en utilisant 20x20 pixels dans la vue).

Exemple :

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();

Pour simplifier l'interaction avec les éléments utilisant une vue transformée, QGraphicsView fournit les fonctions mapTo... et mapFrom... qui permettent d'effectuer la conversion entre les coordonnées de la scène et celles de la vue. Par exemple, vous pouvez appeler mapToScene() pour convertir une coordonnée de vue en une coordonnée de scène à virgule flottante, ou mapFromScene() pour convertir des coordonnées de scène à virgule flottante en coordonnées de vue.

Voir également transform(), resetTransform(), rotate(), scale(), shear() et translate().

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

Réimplémente : QAbstractScrollArea::setupViewport(QWidget *viewport).

Ce slot est appelé par QAbstractScrollArea après que setViewport() a été appelé. Réimplémentez cette fonction dans une sous-classe de QGraphicsView pour initialiser le nouveau viewport widget avant qu'il ne soit utilisé.

Voir aussi setViewport().

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

Coupe la transformation de la vue actuelle par (sh, sv).

Voir aussi setTransform(), transform(), rotate(), scale() et translate().

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

Réimplémente : QWidget::showEvent(QShowEvent *event).

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

Réimplémente : QAbstractScrollArea::sizeHint() const.

QTransform QGraphicsView::transform() const

Renvoie la matrice de transformation actuelle de la vue. Si aucune transformation courante n'est définie, la matrice d'identité est renvoyée.

Voir aussi setTransform(), rotate(), scale(), shear() et translate().

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

Traduit la transformation de la vue actuelle par (dx, dy).

Voir aussi setTransform(), transform(), rotate() et shear().

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

Planifie une mise à jour des rectangles de scène rects.

Voir aussi QGraphicsScene::changed().

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

Notifie à QGraphicsView que le rectangle de la scène a changé. rect est le nouveau rectangle de la scène. Si la vue a déjà un rectangle de scène explicitement défini, cette fonction ne fait rien.

Voir aussi sceneRect et QGraphicsScene::sceneRectChanged().

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

Réimplémente : QAbstractScrollArea::viewportEvent(QEvent *event).

QTransform QGraphicsView::viewportTransform() const

Renvoie une matrice qui associe les coordonnées de la scène aux coordonnées de la fenêtre.

Voir aussi mapToScene() et mapFromScene().

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

Réimplémente : 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.