Sur cette page

QGraphicsView Class

La classe `QGraphicsView` fournit un widget permettant d'afficher le contenu d'une ` QGraphicsScene`. En savoir plus...

En-tête : #include <QGraphicsView>
CMake : find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake : QT += widgets
Hérite de : 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

Slots 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 affiche le contenu d’un fichier « QGraphicsScene » dans une fenêtre de visualisation défilable. Pour créer une scène comportant des éléments géométriques, consultez la documentation de QGraphicsScene. QGraphicsView fait partie du Graphics View Framework.

Pour afficher une scène, commencez par créer un objet QGraphicsView en transmettant l'adresse de la scène que vous souhaitez afficher au constructeur de QGraphicsView. Vous pouvez également appeler setScene() pour définir la scène ultérieurement. Après avoir appelé ` show()`, la vue se déplace par défaut vers le centre de la scène et affiche tous les éléments visibles à cet endroit. Par exemple :

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

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

Vous pouvez vous déplacer explicitement vers n'importe quelle position de la scène à l'aide des barres de défilement ou en appelant la méthode ` centerOn()`. En transmettant un point à la méthode ` centerOn()`, QGraphicsView fera défiler sa fenêtre d'affichage pour s'assurer que ce point soit centré dans la vue. Une surcharge est fournie pour effectuer un défilement vers une « QGraphicsItem » ; dans ce cas, QGraphicsView veillera à ce que le centre de l’élément soit centré dans la vue. Si vous souhaitez simplement 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 certaines parties de celle-ci. Par défaut, la zone visualisée est détectée automatiquement lors du premier affichage de la vue (en appelant ` QGraphicsScene::itemsBoundingRect()`). Pour définir vous-même le rectangle de la zone visualisée, vous pouvez appeler ` setSceneRect()`. Cela ajustera les plages des barres de défilement en conséquence. 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 affiche la scène en appelant ` render()`. Par défaut, les éléments sont dessinés dans la fenêtre d’affichage à l’aide d’un ` QPainter` standard et en utilisant les indications de rendu par défaut. Pour modifier les indications de rendu par défaut que QGraphicsView transmet à ` QPainter ` lors du dessin des éléments, vous pouvez appeler ` setRenderHints()`.

Par défaut, QGraphicsView fournit un QWidget standard pour le widget de fenêtre d'affichage. Vous pouvez accéder à ce widget en appelant viewport(), ou vous pouvez le remplacer en appelant setViewport(). Pour effectuer le rendu à l'aide d'OpenGL, il suffit d'appeler setViewport(new QOpenGLWidget). QGraphicsView prend possession du widget de fenêtre d'affichage.

QGraphicsView prend en charge les transformations affines, à l’aide de ` QTransform`. Vous pouvez soit passer une matrice à ` setTransform()`, soit appeler l’une des fonctions de commodité suivantes : ` rotate()`, ` scale()`, ` translate()` ou ` shear()`. Les deux transformations les plus courantes sont la mise à l’échelle, utilisée pour implémenter le 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 à l’aide de la souris et du clavier. QGraphicsView convertit les événements de souris et de clavier en événements de scène (événements héritant de QGraphicsSceneEvent) et les transmet à la scène affichée. Au final, c’est chaque élément qui gère les événements et y réagit. Par exemple, si vous cliquez sur un élément sélectionnable, celui-ci indiquera généralement à la scène qu’il a été sélectionné, et il se redessinera également pour afficher un rectangle de sélection. De même, si vous cliquez et faites glisser la souris pour déplacer un élément déplaçable, c’est l’élément lui-même qui gère les mouvements de la souris et se déplace. L’interaction avec les éléments est activée par défaut, et vous pouvez l’activer ou la désactiver en appelant la fonction ` setInteractive()`.

Vous pouvez également définir votre propre interaction avec la scène en créant une sous-classe de `QGraphicsView` et en réimplémentant les gestionnaires d’événements de souris et de clavier. Pour simplifier l’interaction par programmation 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 celles de la scène, et de localiser des éléments sur la scène à l’aide des coordonnées de la vue.

Lorsque vous utilisez une fenêtre de rendu ( QOpenGLWidget ) comme fenêtre d'affichage (viewport), le rendu stéréoscopique est pris en charge. Cela s'effectue selon le même principe que décrit à l'adresse QOpenGLWidget::paintGL. Pour l'activer, activez l'indicateur ` QSurfaceFormat::StereoBuffers `. En raison de la manière dont cet indicateur est géré en interne, définissez l'indicateur ` QSurfaceFormat::StereoBuffers ` de manière globale avant de créer la fenêtre à l'aide de la fonction ` QSurfaceFormat::setDefaultFormat()`. Si l’indicateur est activé et que le rendu stéréoscopique est pris en charge par le matériel, les fonctions ` drawBackground()` et ` drawForeground()` seront alors appelées deux fois à chaque image. Appelez la fonction ` QOpenGLWidget::currentTargetBuffer()` pour savoir sur quel tampon le dessin est en cours d’exécution.

Réseau de puces informatiques

Remarque : l’utilisation d’une fenêtre d’affichage OpenGL limite la possibilité d’utiliser QGraphicsProxyWidget. Toutes les combinaisons de widgets et de styles ne sont pas prises en charge avec une telle configuration. Vous devez tester minutieusement votre interface utilisateur et effectuer les ajustements nécessaires.

Voir également QGraphicsScene, QGraphicsItem et QGraphicsSceneEvent.

Documentation sur les types de membres

enum QGraphicsView::CacheModeFlag
flags QGraphicsView::CacheMode

Cette énumération décrit les indicateurs que vous pouvez définir pour le mode de mise en cache d'un « QGraphicsView ».

ConstanteValeurDescription
QGraphicsView::CacheNone0x0Tout le dessin s'effectue directement dans la fenêtre d'affichage.
QGraphicsView::CacheBackground0x1L'arrière-plan est mis en cache. Cela concerne aussi bien les arrière-plans personnalisés que ceux basés sur la propriété backgroundBrush. Lorsque cet indicateur est activé, QGraphicsView alloue une image pixel (pixmap) de la taille totale de la fenêtre d'affichage.

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

Voir également cacheMode.

enum QGraphicsView::DragMode

Cette énumération décrit l'action par défaut de la vue lorsque l'on appuie sur le bouton de la souris et que l'on fait glisser le curseur sur la fenêtre d'affichage.

ConstanteValeurDescription
QGraphicsView::NoDrag0Rien ne se passe ; l'événement de souris est ignoré.
QGraphicsView::ScrollHandDrag1Le curseur se transforme en main pointante, et le fait de faire glisser la souris fait défiler les barres de défilement. Ce mode fonctionne aussi bien en mode interactif ( interactive ) qu’en mode non interactif.
QGraphicsView::RubberBandDrag2Un « élastique » apparaît. Le fait de faire glisser la souris définit la géométrie de l’élastique, et tous les éléments recouverts par celui-ci sont sélectionnés. Ce mode est désactivé pour les vues non interactives.

Voir aussi dragMode et QGraphicsScene::setSelectionArea().

enum QGraphicsView::OptimizationFlag
flags QGraphicsView::OptimizationFlags

Cette énumération décrit les indicateurs que vous pouvez activer pour améliorer les performances de rendu dans QGraphicsView. Par défaut, aucun de ces indicateurs n'est activé. Notez que l'activation d'un indicateur entraîne généralement un effet secondaire, et que cet effet peut varier selon les périphériques de dessin et les plateformes.

ConstanteValeurDescription
QGraphicsView::DontSavePainterState0x1Lors du rendu, QGraphicsView préserve l’état du peintre (voir QPainter::save()) lors du rendu de l’arrière-plan ou du premier plan, ainsi que 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 le dessin). Toutefois, si les éléments restaurent systématiquement l’état, vous devriez activer cet indicateur pour empêcher QGraphicsView de faire de même.
QGraphicsView::DontAdjustForAntialiasing0x2Désactive l’ajustement automatique de l’anticrénelage des zones exposées par QGraphicsView. Les éléments qui dessinent des lignes anticrénelées aux limites de leur QGraphicsItem::boundingRect() peuvent finir par afficher des parties de la ligne à l’extérieur. Pour éviter les artefacts de rendu, QGraphicsView agrandit toutes les régions exposées de 2 pixels dans toutes les directions. Si vous activez cet indicateur, ` QGraphicsView ` n’effectuera plus ces ajustements, ce qui réduira au minimum les zones nécessitant un rafraîchissement et améliorera ainsi les performances. Un effet secondaire courant est que les éléments qui utilisent l’anticrénelage peuvent laisser des traces de dessin sur la scène lorsqu’ils sont déplacés.
QGraphicsView::IndirectPainting0x4Depuis Qt 4.6, rétablit l’ancien algorithme de dessin qui appelle QGraphicsView::drawItems() et QGraphicsScene::drawItems(). À utiliser uniquement pour des raisons de 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 points d'ancrage possibles qu'une QGraphicsView peut utiliser lorsque l'utilisateur redimensionne la vue ou lorsque celle-ci est transformée.

ConstanteValeurDescription
QGraphicsView::NoAnchor0Aucun point d'ancrage, c'est-à-dire que la vue laisse la position de la scène inchangée.
QGraphicsView::AnchorViewCenter1Le point de la scène situé 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éaffichée, QGraphicsView met à jour l’intégralité de la fenêtre d’affichage. Cette approche est la plus rapide lorsque QGraphicsView passe plus de temps à déterminer ce qu’il faut dessiner qu’à dessiner proprement dit (par exemple, lorsque de très nombreux petits éléments sont mis à jour de manière répétée). Il s’agit du mode de mise à jour privilégié pour les fenêtres d’affichage qui ne prennent pas en charge les mises à jour partielles, telles que QOpenGLWidget, ainsi que pour celles qui doivent désactiver l’optimisation du défilement.
QGraphicsView::MinimalViewportUpdate1QGraphicsView déterminera la région minimale de la fenêtre d’affichage nécessitant un rafraîchissement, ce qui minimise le temps consacré au dessin en évitant de rafraîchir les zones qui n’ont pas changé. Il s’agit du mode par défaut de QGraphicsView. Bien que cette approche offre généralement les meilleures performances, s’il y a de nombreux petits changements visibles dans la scène, QGraphicsView risque de passer plus de temps à déterminer l’approche minimale qu’à effectuer le dessin proprement dit.
QGraphicsView::SmartViewportUpdate2QGraphicsView tentera de trouver un mode de mise à jour optimal en analysant les zones nécessitant un rafraîchissement.
QGraphicsView::BoundingRectViewportUpdate4Le rectangle englobant l’ensemble des modifications dans la fenêtre d’affichage sera redessiné. Ce mode présente l’avantage que QGraphicsView ne recherche les modifications que dans une seule région, ce qui minimise 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 d’affichage lorsque la scène change ; l’utilisateur est censé contrôler toutes les mises à jour. Ce mode désactive tous les tests de visibilité des éléments (potentiellement lents) dans QGraphicsView, et convient aux scènes qui nécessitent une fréquence d’images fixe, ou lorsque la fenêtre d’affichage est mise à jour en externe.

Voir également viewportUpdateMode.

Documentation des propriétés

alignment : Qt::Alignment

Cette propriété définit l'alignement de la scène dans la vue lorsque celle-ci est entièrement visible.

Si la scène entière est visible dans la vue (c'est-à-dire s'il n'y a pas de barres de défilement visibles), l'alignement de la vue déterminera l'emplacement où la scène sera affichée dans la vue. Par exemple, si l'alignement est défini sur « Qt::AlignCenter » (centré), qui est la valeur par défaut, la scène sera centrée dans la vue ; et si l'alignement est défini sur «Qt::AlignLeft » ou « Qt::AlignTop », la scène sera affichée 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 le pinceau d'arrière-plan de la scène.

Cette propriété définit le pinceau d'arrière-plan de la scène dans cette vue. Elle sert à remplacer l'arrière-plan propre à la scène et définit le comportement de la méthode ` drawBackground()`. Pour créer un dessin d'arrière-plan personnalisé pour cette vue, vous pouvez plutôt réimplémenter la méthode ` drawBackground()`.

Par défaut, cette propriété contient un pinceau présentant 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é indique quelles parties de la vue sont mises en cache

QGraphicsView Elle permet de mettre en cache du contenu pré-rendu dans une texture de remplissage ( QPixmap), qui est ensuite dessinée dans la fenêtre d’affichage. 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 comportant des textures, des dégradés ou des mélanges alpha, par exemple, peuvent être particulièrement lents à afficher, notamment lorsque la vue est transformée. L'indicateur « 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 également resetCachedContent() et QPixmapCache.

dragMode : DragMode

Cette propriété définit le comportement lors du glissement de 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 d'affichage à l'aide d'un curseur en forme de main, ou sélectionner plusieurs éléments à l'aide d'un « élastique »). La valeur par défaut, ` NoDrag`, n'a aucun effet.

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

Fonctions d’accès :

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

foregroundBrush : QBrush

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

Cette propriété définit le pinceau de premier plan pour la scène dans cette vue. Elle sert à remplacer le pinceau de premier plan propre à la scène et définit le comportement de la méthode ` drawForeground()`. Pour personnaliser le dessin du premier plan de cette vue, vous pouvez plutôt réimplémenter la méthode ` drawForeground()`.

Par défaut, cette propriété contient un pinceau présentant 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 autoriser l'interaction avec la scène. Dans le cas contraire, cette vue n'autorisera aucune interaction et tous les événements liés à la souris ou au clavier seront ignorés (c'est-à-dire qu'elle fonctionnera comme une vue en lecture seule).

Par défaut, cette propriété est définie sur « true ».

Fonctions d'accès :

bool isInteractive() const
void setInteractive(bool allowed)

optimizationFlags : OptimizationFlags

options permettant d'optimiser les performances d'QGraphicsView.

QGraphicsView utilise le clipping, des ajustements supplémentaires des rectangles de délimitation et certaines autres aides pour améliorer la qualité de rendu et les performances dans le cas d'une scène graphique courante. Cependant, selon la plate-forme cible, la scène et la fenêtre d'affichage utilisée, certaines de ces opérations peuvent nuire aux performances.

L'effet varie d'un indicateur à l'autre ; consultez la documentation d'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 le tracé de chaque élément visible. QPainter utilise les indications de rendu pour activer ou désactiver des fonctionnalités de rendu telles que l'anticrénelage et la transformation lisse des images 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 sa taille est modifiée.

QGraphicsView utilise cette propriété pour déterminer 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 ancré pendant le 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). Sinon, si la scène tient entièrement dans la vue, ` QGraphicsScene ` utilise l'alignement de la vue pour positionner la scène dans celle-ci.

Fonctions d'accès :

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

Voir également alignment 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 lors de l'utilisation du mode de glissement « RubberBandDrag ».

La valeur par défaut est « Qt::IntersectsItemShape » ; tous les éléments dont la forme recoupe le rectangle de sélection ou est contenue par celui-ci 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 surface de la scène affichée par cette vue.

Le rectangle de la scène définit l'étendue de celle-ci ; dans le cas de la vue, cela correspond à la zone de la scène que vous pouvez parcourir à l'aide des barres de défilement.

Si elle n’est pas définie, ou si une valeur nulle QRectF est définie, cette propriété a la même valeur que QGraphicsScene::sceneRect et évolue en fonction de QGraphicsScene::sceneRect. Dans le cas contraire, le rectangle de la 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 à la place.

Par défaut, cette propriété contient un rectangle situé à l’origine, de largeur et de hauteur nulles.

Fonctions d’accès :

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

Voir également QGraphicsScene::sceneRect.

transformationAnchor : ViewportAnchor

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

QGraphicsView utilise cette propriété pour déterminer comment positionner la scène dans la fenêtre d’affichage 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 situé au centre de la vue reste inchangé pendant les transformations (par exemple, lors d’une rotation, la scène donnera l’impression de 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 la scène entière tient dans la fenêtre, « QGraphicsScene » utilise l’alignement de la fenêtre pour positionner la scène dans celle-ci.

Fonctions d’accès :

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

Voir également «alignment » et « resizeAnchor ».

viewportUpdateMode : ViewportUpdateMode

comment la fenêtre d'affichage doit mettre à jour son contenu.

QGraphicsView utilise cette propriété pour déterminer 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. Consultez la documentation de ViewportUpdateMode pour plus de détails.

La valeur par défaut est « MinimalViewportUpdate » ; avec « QGraphicsView », la zone de la fenêtre d’affichage mise à jour lors d’un changement de contenu sera aussi réduite que possible.

Fonctions d’accès :

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

Voir également ViewportUpdateMode et cacheMode.

Documentation des fonctions membres

QGraphicsView::QGraphicsView(QWidget *parent = nullptr)

Crée un objet `QGraphicsView`. L'objet ` parent ` est transmis au constructeur de ` QWidget`.

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

Crée un objet `QGraphicsView` et définit la scène à afficher sur scene. La variable ` parent ` est transmise 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 d'affichage afin de s'assurer que les coordonnées de la scène pos, soient centrées dans la vue.

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

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

Voir également ensureVisible().

void QGraphicsView::centerOn(const QGraphicsItem *item)

Fait défiler le contenu de la fenêtre d'affichage afin de s'assurer que item soit centré dans la vue.

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

Voir aussi ` ensureVisible()`.

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

Cette fonction est fournie à titre pratique. 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.

Tout le dessin s'effectue dans les coordonnées de la scène. ` rect ` correspond au rectangle exposé.

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

Voir également ` drawForeground()` et ` QGraphicsScene::drawBackground()`.

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

Dessine le premier plan de la scène à l'aide de ` painter`, une fois que l'arrière-plan et tous les éléments ont été dessinés. Réimplémentez cette fonction pour fournir un premier plan personnalisé à 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.

Tout le dessin s'effectue dans les coordonnées de la scène. ` rect ` correspond au rectangle exposé.

L'implémentation par défaut remplit ` rect ` à l'aide du 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 également ` 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 d'affichage de manière à ce que le rectangle de la scène rect soit visible, avec des marges spécifiées en pixels par xmargin et ymargin. Si le rectangle spécifié n'est pas accessible, le contenu est déplacé vers la position valide la plus proche. La valeur par défaut pour les deux marges est de 50 pixels.

Voir également centerOn().

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

Fait défiler le contenu de la fenêtre d'affichage 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é est inaccessible, le contenu est déplacé vers 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 également centerOn().

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

Cette fonction est fournie à titre 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)

Redimensionne la matrice de vue et fait défiler les barres de défilement pour s'assurer que le rectangle de la scène rect s'insère dans la fenêtre d'affichage. rect doit se trouver à l'intérieur du rectangle de la scène ; sinon, fitInView() ne peut pas garantir que l'intégralité du rectangle soit 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 ne s'y adapte pas parfaitement.

Il est courant d’appeler `fitInView()` depuis une réimplémentation de ` resizeEvent()`, afin de s’assurer que la scène entière, ou certaines parties de celle-ci, soit automatiquement mise à l’échelle pour s’adapter à la nouvelle taille de la fenêtre d’affichage lorsque la vue est redimensionnée. Notez toutefois que l’appel de `fitInView()` depuis l’intérieur de ` resizeEvent()` peut entraîner une récursivité indésirable dans le redimensionnement, si la nouvelle transformation active ou désactive l’état automatique des barres de défilement. Vous pouvez définir les politiques des barres de défilement sur « toujours activées » ou « toujours désactivées » pour éviter cela (voir ` horizontalScrollBarPolicy()` et ` verticalScrollBarPolicy()`).

Si ` rect ` est vide, ou si la fenêtre d’affichage 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)

Garantit que item s'affiche correctement dans la vue, en redimensionnant celle-ci conformément à aspectRatioMode.

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

Voir également ensureVisible() et centerOn().

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

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

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

Voir également 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` (requête `Qt::InputMethodQuery`) const.

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

Invalide et planifie un rafraîchissement de layers à l'intérieur de rect. rect est exprimé en coordonnées de scène. Tout contenu mis en cache pour layers à l'intérieur de rect est invalidé sans condition et rafraîchi.

Vous pouvez appeler cette fonction pour signaler à QGraphicsView les modifications apportées à l’arrière-plan ou au premier plan de la scène. Elle est couramment utilisée pour les scènes dont l’arrière-plan est constitué de tuiles, afin de signaler les changements lorsque QGraphicsView a activé la mise en cache de l’arrière-plan.

Notez qu’ QGraphicsView ne prend actuellement en charge que la mise en cache de l’arrière-plan (voir QGraphicsView::CacheBackground). Cette fonction équivaut à appeler update() si un calque autre que QGraphicsScene::BackgroundLayer est passé en paramètre.

Voir également QGraphicsScene::invalidate() et update().

bool QGraphicsView::isTransformed() const

Renvoie « true » si la vue a été transformée (c'est-à-dire si une transformation autre que l'identité lui a été attribuée, ou si les barres de défilement ont été ajustées).

Voir également setTransform(), horizontalScrollBar() et verticalScrollBar().

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

Renvoie l'élément situé à la position pos, exprimée en coordonnées de la fenêtre d'affichage. S'il y a plusieurs éléments à cette position, cette fonction renvoie l'élément situé tout en haut.

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 également items() et Sorting.

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

Cette fonction est fournie à titre 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, classés par ordre décroissant d'empilement (c'est-à-dire que le premier élément de la liste renvoyée est celui situé tout en haut).

Voir également 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 classés par ordre décroissant d'empilement (c'est-à-dire que le premier élément de la liste est celui situé tout en haut, et le dernier celui situé tout en bas). pos correspond aux coordonnées de la fenêtre d'affichage.

Cette fonction est le plus souvent appelée depuis les gestionnaires d’événements de souris d’une sous-classe de ` QGraphicsView`. ` pos ` est exprimé en coordonnées de fenêtre d’affichage non transformées, tout comme ` QMouseEvent::position()`.

void CustomView::mousePressEvent(QMouseEvent*event)
{
    qDebug() << "There are" << items(event->pos()).size()
            <<  « éléments à la position » << mapToScene(event->pos());
}

Voir également QGraphicsScene::items() et Sorting.

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

Cette fonction est fournie à titre pratique. Elle équivaut à appeler la fonction items(QPoint(x, y)).

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

Cette fonction pratique équivaut à appeler les éléments suivants : 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, selon la valeur de ` mode`, sont soit contenus dans ` path`, soit en intersection avec celui-ci. ` path ` est exprimé en coordonnées de la fenêtre d'affichage.

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

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

Voir également 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, selon la valeur de ` mode`, sont soit contenus dans ` polygon`, soit en intersection avec celui-ci. ` polygon ` est exprimé en coordonnées de la fenêtre d'affichage.

La valeur par défaut de ` mode ` est ` Qt::IntersectsItemShape` ; tous les éléments dont la forme exacte recoupe ou est contenue dans ` 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 celui situé tout en haut).

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

Voir également 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, selon la valeur de ` mode`, sont soit contenus dans ` rect`, soit en intersection avec celui-ci. ` rect ` est exprimé en coordonnées de la fenêtre d'affichage.

La valeur par défaut de ` mode ` est ` Qt::IntersectsItemShape` ; tous les éléments dont la forme exacte recoupe ou est contenue dans ` 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 celui situé tout en haut).

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

Voir également 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

Convertit le chemin du pinceau dans les coordonnées de la scène path en un chemin du pinceau dans les coordonnées de la fenêtre d'affichage.

Voir aussi mapToScene().

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

Convertit les coordonnées de la scène point en coordonnées de la fenêtre d'affichage.

Voir aussi mapToScene().

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

Convertit un polygone de coordonnées de scène polygon en un polygone de coordonnées de fenêtre d'affichage.

Voir aussi mapToScene().

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

Renvoie le rectangle de scène rect sous forme de polygone de coordonnées de fenêtre d'affichage.

Voir aussi mapToScene().

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

Cette fonction est fournie à titre 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 à titre de commodité. Elle équivaut à appeler `mapFromScene(QRectF(x, y, w, h))`.

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

Renvoie le chemin de dessin de la fenêtre d'affichage path mappé sur un chemin de dessin dans les coordonnées de la scène.

Voir aussi mapFromScene().

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

Renvoie l'point de coordonnées de la fenêtre d'affichage mappée aux coordonnées de la scène.

Remarque : il peut être utile de mapper l'ensemble du rectangle couvert par le pixel situé à l'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 d'affichage polygon mappé sur un polygone de coordonnées de scène.

Voir également mapFromScene().

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

Renvoie le rectangle de la fenêtre d'affichage 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 à titre 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 à titre 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)

Convertit le rectangle ` source `, exprimé en coordonnées de vue, de la scène en ` target`, exprimé en coordonnées du périphérique de dessin, à l'aide de ` painter`. Cette fonction est utile pour capturer le contenu de la vue sur un périphérique de dessin, tel qu'un ` QImage ` (par exemple, pour réaliser une capture d'écran), ou pour imprimer via `QPrinter`. Par exemple :

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

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

Le contenu du rectangle source sera transformé selon aspectRatioMode afin de s'adapter au rectangle cible. Par défaut, le rapport d'aspect est conservé et source est mis à l'échelle pour s'adapter à target.

Voir également QGraphicsScene::render().

void QGraphicsView::resetCachedContent()

Réinitialise tout le 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 l'appeler 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 rafraîchissement complet.

Voir également cacheMode().

void QGraphicsView::resetTransform()

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

Voir également 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 vue actuelle de angle degrés dans le sens des aiguilles d'une montre.

Voir également 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 d'affichage est spécifié par rubberBandRect. Les positions de début et de fin du glissement sont fournies en points de scène via fromScenePoint et toScenePoint.

Lorsque la sélection par « rubberband » prend fin, ce signal est émis avec des valeurs nulles.

Voir également rubberBandRect().

QRect QGraphicsView::rubberBandRect() const

Cette fonction renvoie la zone actuelle du « rubber band » (en coordonnées de la fenêtre d'affichage) si l'utilisateur est en train d'effectuer une sélection d'éléments à l'aide du « rubber band ». Lorsque l'utilisateur n'utilise pas le « rubber band », cette fonction renvoie (une valeur nulle) QRectF().

Notez qu’une partie de cette « QRect » peut se trouver en dehors de la fenêtre d’affichage. Elle peut, par exemple, contenir des valeurs négatives.

Voir également ` rubberBandSelectionMode ` et ` rubberBandChanged()`.

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

Applique un facteur d'échelle à la transformation de la vue actuelle selon (sx, sy).

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

QGraphicsScene *QGraphicsView::scene() const

Renvoie un pointeur vers la scène actuellement affichée dans la vue. Si aucune scène n'est actuellement affichée, la valeur « nullptr » est renvoyée.

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 défini sur « true » ; sinon, désactive flag.

Voir également optimizationFlags.

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

Si la valeur de enabled est « true », l’indication de rendu « hint » est activée ; dans le cas contraire, elle est désactivée.

Voir également renderHints.

void QGraphicsView::setScene(QGraphicsScene *scene)

Définit la scène actuelle sur « scene ». Si « scene » est déjà affichée, cette fonction ne fait rien.

Lorsqu’une scène est définie sur une vue, le signal ` QGraphicsScene::changed()` est automatiquement connecté au slot ` 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 ne prend pas possession de scene.

Voir également ` scene()`.

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

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

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

La matrice de transformation convertit la scène en coordonnées de vue. Avec la transformation par défaut, fournie par la matrice 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 de mise à l'échelle 2x2 est appliquée, la scène sera dessinée dans un rapport de 1:2 (par exemple, un élément rectangulaire de 10x10 sera alors dessiné à l'aide de 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 à l’aide d’une vue transformée, QGraphicsView fournit les fonctions `mapTo...` et `mapFrom...` qui permettent de convertir les coordonnées de la scène en coordonnées de la vue, et inversement. Par exemple, vous pouvez appeler ` mapToScene()` pour mapper une coordonnée de la vue sur une coordonnée de scène à virgule flottante, ou ` mapFromScene()` pour mapper des coordonnées de scène à virgule flottante sur des coordonnées de la 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 l'appel de setViewport(). Réimplémentez cette fonction dans une sous-classe de QGraphicsView afin d'initialiser la nouvelle fenêtre d'affichage widget avant son utilisation.

Voir également setViewport().

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

Applique une transformation à la vue actuelle selon (sh, sv).

Voir également 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 n'est définie, la matrice identité est renvoyée.

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

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

Transforme la vue actuelle selon (dx, dy).

Voir également setTransform(), transform(), rotate() et shear().

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

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

Voir également QGraphicsScene::changed().

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

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

Voir également 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 convertit les coordonnées de la scène en coordonnées de la fenêtre d'affichage.

Voir également 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.