Sur cette page

QGraphicsScene Class

La classe `QGraphicsScene` fournit une surface permettant de gérer un grand nombre d'éléments graphiques 2D. En savoir plus...

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

Types publics

enum ItemIndexMethod { BspTreeIndex, NoIndex }
enum SceneLayer { ItemLayer, BackgroundLayer, ForegroundLayer, AllLayers }
flags SceneLayers

Propriétés

Fonctions publiques

QGraphicsScene(QObject *parent = nullptr)
QGraphicsScene(const QRectF &sceneRect, QObject *parent = nullptr)
QGraphicsScene(qreal x, qreal y, qreal width, qreal height, QObject *parent = nullptr)
virtual ~QGraphicsScene()
QGraphicsItem *activePanel() const
QGraphicsWidget *activeWindow() const
QGraphicsEllipseItem *addEllipse(const QRectF &rect, const QPen &pen = QPen(), const QBrush &brush = QBrush())
QGraphicsEllipseItem *addEllipse(qreal x, qreal y, qreal w, qreal h, const QPen &pen = QPen(), const QBrush &brush = QBrush())
void addItem(QGraphicsItem *item)
QGraphicsLineItem *addLine(const QLineF &line, const QPen &pen = QPen())
QGraphicsLineItem *addLine(qreal x1, qreal y1, qreal x2, qreal y2, const QPen &pen = QPen())
QGraphicsPathItem *addPath(const QPainterPath &path, const QPen &pen = QPen(), const QBrush &brush = QBrush())
QGraphicsPixmapItem *addPixmap(const QPixmap &pixmap)
QGraphicsPolygonItem *addPolygon(const QPolygonF &polygon, const QPen &pen = QPen(), const QBrush &brush = QBrush())
QGraphicsRectItem *addRect(const QRectF &rect, const QPen &pen = QPen(), const QBrush &brush = QBrush())
QGraphicsRectItem *addRect(qreal x, qreal y, qreal w, qreal h, const QPen &pen = QPen(), const QBrush &brush = QBrush())
QGraphicsSimpleTextItem *addSimpleText(const QString &text, const QFont &font = QFont())
QGraphicsTextItem *addText(const QString &text, const QFont &font = QFont())
QGraphicsProxyWidget *addWidget(QWidget *widget, Qt::WindowFlags wFlags = Qt::WindowFlags())
QBrush backgroundBrush() const
int bspTreeDepth() const
void clearFocus()
QList<QGraphicsItem *> collidingItems(const QGraphicsItem *item, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
QGraphicsItemGroup *createItemGroup(const QList<QGraphicsItem *> &items)
void destroyItemGroup(QGraphicsItemGroup *group)
QGraphicsItem *focusItem() const
bool focusOnTouch() const
QFont font() const
QBrush foregroundBrush() const
bool hasFocus() const
qreal height() const
virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const
void invalidate(qreal x, qreal y, qreal w, qreal h, QGraphicsScene::SceneLayers layers = AllLayers)
bool isActive() const
QGraphicsItem *itemAt(const QPointF &position, const QTransform &deviceTransform) const
QGraphicsItem *itemAt(qreal x, qreal y, const QTransform &deviceTransform) const
QGraphicsScene::ItemIndexMethod itemIndexMethod() const
QList<QGraphicsItem *> items(Qt::SortOrder order = Qt::DescendingOrder) const
QList<QGraphicsItem *> items(const QPointF &pos, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const
QList<QGraphicsItem *> items(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const
QList<QGraphicsItem *> items(const QPolygonF &polygon, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const
QList<QGraphicsItem *> items(const QRectF &rect, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const
QList<QGraphicsItem *> items(qreal x, qreal y, qreal w, qreal h, Qt::ItemSelectionMode mode, Qt::SortOrder order, const QTransform &deviceTransform = QTransform()) const
QRectF itemsBoundingRect() const
qreal minimumRenderSize() const
QGraphicsItem *mouseGrabberItem() const
QPalette palette() const
void removeItem(QGraphicsItem *item)
void render(QPainter *painter, const QRectF &target = QRectF(), const QRectF &source = QRectF(), Qt::AspectRatioMode aspectRatioMode = Qt::KeepAspectRatio)
QRectF sceneRect() const
QList<QGraphicsItem *> selectedItems() const
QPainterPath selectionArea() const
bool sendEvent(QGraphicsItem *item, QEvent *event)
void setActivePanel(QGraphicsItem *item)
void setActiveWindow(QGraphicsWidget *widget)
void setBackgroundBrush(const QBrush &brush)
void setBspTreeDepth(int depth)
void setFocus(Qt::FocusReason focusReason = Qt::OtherFocusReason)
void setFocusItem(QGraphicsItem *item, Qt::FocusReason focusReason = Qt::OtherFocusReason)
void setFocusOnTouch(bool enabled)
void setFont(const QFont &font)
void setForegroundBrush(const QBrush &brush)
void setItemIndexMethod(QGraphicsScene::ItemIndexMethod method)
void setMinimumRenderSize(qreal minSize)
void setPalette(const QPalette &palette)
void setSceneRect(const QRectF &rect)
void setSceneRect(qreal x, qreal y, qreal w, qreal h)
void setSelectionArea(const QPainterPath &path, const QTransform &deviceTransform)
void setSelectionArea(const QPainterPath &path, Qt::ItemSelectionOperation selectionOperation = Qt::ReplaceSelection, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, const QTransform &deviceTransform = QTransform())
void setStickyFocus(bool enabled)
void setStyle(QStyle *style)
bool stickyFocus() const
QStyle *style() const
void update(qreal x, qreal y, qreal w, qreal h)
QList<QGraphicsView *> views() const
qreal width() const

Emplacements publics

void advance()
void clear()
void clearSelection()
void invalidate(const QRectF &rect = QRectF(), QGraphicsScene::SceneLayers layers = AllLayers)
void update(const QRectF &rect = QRectF())

Signaux

void changed(const QList<QRectF> &region)
void focusItemChanged(QGraphicsItem *newFocusItem, QGraphicsItem *oldFocusItem, Qt::FocusReason reason)
void sceneRectChanged(const QRectF &rect)
void selectionChanged()

Fonctions protégées

virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *contextMenuEvent)
virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *event)
virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *event)
virtual void dragMoveEvent(QGraphicsSceneDragDropEvent *event)
virtual void drawBackground(QPainter *painter, const QRectF &rect)
virtual void drawForeground(QPainter *painter, const QRectF &rect)
virtual void dropEvent(QGraphicsSceneDragDropEvent *event)
virtual void focusInEvent(QFocusEvent *focusEvent)
virtual void focusOutEvent(QFocusEvent *focusEvent)
virtual void helpEvent(QGraphicsSceneHelpEvent *helpEvent)
virtual void inputMethodEvent(QInputMethodEvent *event)
virtual void keyPressEvent(QKeyEvent *keyEvent)
virtual void keyReleaseEvent(QKeyEvent *keyEvent)
virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *mouseEvent)
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent)
virtual void mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent)
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent)
virtual void wheelEvent(QGraphicsSceneWheelEvent *wheelEvent)

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

virtual bool event(QEvent *event) override
virtual bool eventFilter(QObject *watched, QEvent *event) override

Slots protégés

virtual bool focusNextPrevChild(bool next)

Description détaillée

Cette classe sert de conteneur pour les QGraphicsItems. Elle est utilisée conjointement avec l'QGraphicsView pour afficher des éléments graphiques, tels que des lignes, des rectangles, du texte ou même des éléments personnalisés, sur une surface 2D. QGraphicsScene fait partie du Graphics View Framework.

QGraphicsScene offre également des fonctionnalités permettant de déterminer efficacement à la fois l’emplacement des éléments et quels éléments sont visibles dans une zone arbitraire de la scène. Grâce au widget « QGraphicsView », vous pouvez soit visualiser la scène dans son intégralité, soit zoomer pour n’afficher que certaines parties de la scène.

Exemple :

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

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

Notez que QGraphicsScene n’a pas d’apparence visuelle propre ; il se contente de gérer les éléments. Vous devez créer un widget « QGraphicsView » pour visualiser la scène.

Pour ajouter des éléments à une scène, commencez par créer un objet QGraphicsScene. Vous disposez alors de deux options : soit vous ajoutez vos objets « QGraphicsItem s » existants en appelant ` addItem()`, soit vous appelez l’une des fonctions de commodité suivantes : ` addEllipse()`, ` addLine()`, ` addPath()`, ` addPixmap()`, ` addPolygon()`, ` addRect()` ou ` addText()`, qui renvoient toutes un pointeur vers l’élément nouvellement ajouté. Les dimensions des éléments ajoutés à l’aide de ces fonctions sont relatives au système de coordonnées de l’élément, et la position de l’élément est initialisée à (0, 0) dans la scène.

Vous pouvez ensuite visualiser la scène à l’aide de ` QGraphicsView`. Lorsque la scène change (par exemple, lorsqu’un élément se déplace ou est transformé), `QGraphicsScene` émet le signal ` changed()`. Pour supprimer un élément, appelez ` removeItem()`.

QGraphicsScene utilise un algorithme d’indexation pour gérer efficacement l’emplacement des éléments. Par défaut, un arbre BSP (Binary Space Partitioning) est utilisé ; il s’agit d’un algorithme adapté aux scènes de grande taille où la plupart des éléments restent statiques (c’est-à-dire qu’ils ne se déplacent pas). Vous pouvez choisir de désactiver cet index en appelant setItemIndexMethod(). Pour plus d’informations sur les algorithmes d’indexation disponibles, consultez la propriété itemIndexMethod.

Le rectangle englobant de la scène est défini en appelant setSceneRect(). Les éléments peuvent être placés à n’importe quelle position sur la scène, et la taille de la scène est par défaut illimitée. Le rectangle de la scène n’est utilisé qu’à des fins de gestion interne, pour maintenir l’index des éléments de la scène. Si le rectangle de la scène n’est pas défini, QGraphicsScene utilisera comme rectangle de la scène la zone englobante de tous les éléments, telle que renvoyée par la fonction ` itemsBoundingRect()`. Cependant, la fonction ` itemsBoundingRect()` est relativement gourmande en temps, car elle collecte les informations de position de chaque élément présent sur la scène. C’est pourquoi vous devriez toujours définir le rectangle de la scène lorsque vous travaillez sur des scènes volumineuses.

L’un des principaux atouts de QGraphicsScene réside dans sa capacité à déterminer efficacement la position des éléments. Même avec des millions d’éléments sur la scène, les fonctions items() permettent de déterminer la position d’un élément en quelques millisecondes. Il existe plusieurs surcharges de la fonction ` items()` : l’une qui recherche les éléments à une position donnée, une autre qui recherche les éléments situés à l’intérieur d’un polygone ou d’un rectangle, ou qui les coupent, et bien d’autres encore. La liste des éléments renvoyés est triée par ordre de superposition, l’élément situé tout en haut étant le premier de la liste. Pour plus de commodité, il existe également une fonction ` itemAt()` qui renvoie l’élément situé tout en haut à une position donnée.

QGraphicsScene gère les informations de sélection pour la scène. Pour sélectionner des éléments, appelez ` setSelectionArea()` ; pour effacer la sélection actuelle, appelez ` clearSelection()`. Appelez ` selectedItems()` pour obtenir la liste de tous les éléments sélectionnés.

Gestion et propagation des événements

Une autre responsabilité de QGraphicsScene consiste à propager les événements provenant de QGraphicsView. Pour envoyer un événement à une scène, vous devez créer un événement héritant de QEvent, puis l'envoyer à l'aide, par exemple, de la fonction QCoreApplication::sendEvent(). La fonction event() est chargée de distribuer l'événement aux différents éléments. Certains événements courants sont gérés par des gestionnaires d’événements prêts à l’emploi. Par exemple, les événements de frappe de touche sont gérés par keyPressEvent(), et les événements de clic de souris par mousePressEvent().

Les événements de touche sont transmis à l’élément actif. Pour définir l’élément actif, vous pouvez soit appeler ` setFocusItem()`, en passant un élément pouvant recevoir le focus, soit laisser l’élément lui-même appeler ` QGraphicsItem::setFocus()`. Appelez ` focusItem()` pour obtenir l’élément actif actuel. Pour des raisons de compatibilité avec les widgets, la scène gère également ses propres informations de focus. Par défaut, la scène n’a pas le focus et tous les événements de touche sont ignorés. Si la fonction ` setFocus()` est appelée, ou si un élément de la scène obtient le focus, la scène obtient automatiquement le focus. Si la scène a le focus, la fonction ` hasFocus()` renverra `true`, et les événements de touche seront transmis à l’élément ayant le focus, le cas échéant. Si la scène perd le focus (c'est-à-dire si quelqu'un appelle ` clearFocus()` alors qu'un élément a le focus), la scène conservera les informations de focus de cet élément, et dès qu'elle récupérera le focus, elle s'assurera que le dernier élément ayant eu le focus le récupère à son tour.

Pour les effets de survol, QGraphicsScene diffuse des événements de survol. Si un élément accepte les événements de survol (voir QGraphicsItem::acceptHoverEvents()), il recevra un événement « GraphicsSceneHoverEnter » lorsque la souris entrera dans sa zone. À mesure que la souris continue de se déplacer à l’intérieur de la zone de l’élément, QGraphicsScene lui enverra des événements « GraphicsSceneHoverMove ». Lorsque la souris quitte la zone de l’élément, celui-ci recevra un événement « GraphicsSceneHoverLeave ».

Tous les événements de souris sont transmis à l’élément « mouse grabber » actuel. Un élément devient le « mouse grabber » de la scène s’il accepte les événements de souris (voir QGraphicsItem::acceptedMouseButtons()) et s’il reçoit un événement « mouse press ». Il reste le « mouse grabber » jusqu’à ce qu’il reçoive un événement « mouse release » alors qu’aucun autre bouton de souris n’est enfoncé. Vous pouvez appeler la fonction mouseGrabberItem() pour déterminer quel élément est actuellement le « mouse grabber ».

Voir également QGraphicsItem et QGraphicsView.

Documentation sur les types de membres

enum QGraphicsScene::ItemIndexMethod

Cette énumération décrit les algorithmes d'indexation fournis par ` QGraphicsScene ` pour gérer les informations de position des éléments présents dans la scène.

ConstanteValeurDescription
QGraphicsScene::BspTreeIndex0Un arbre de partition binaire (BSP) est utilisé. Tous les algorithmes de localisation d'éléments d'QGraphicsScene ont une complexité proche de la complexité logarithmique, grâce à l'utilisation de la recherche binaire. L'ajout, le déplacement et la suppression d'éléments s'effectuent en temps logarithmique. Cette approche est idéale pour les scènes statiques (c'est-à-dire les scènes où la plupart des éléments ne se déplacent pas).
QGraphicsScene::NoIndex-1Aucun index n’est utilisé. La localisation des éléments est d’une complexité linéaire, car tous les éléments de la scène sont parcourus. L’ajout, le déplacement et la suppression d’éléments s’effectuent toutefois en temps constant. Cette approche est idéale pour les scènes dynamiques, où de nombreux éléments sont ajoutés, déplacés ou supprimés en continu.

Voir également setItemIndexMethod() et bspTreeDepth.

enum QGraphicsScene::SceneLayer
flags QGraphicsScene::SceneLayers

Cette énumération décrit les couches de rendu dans un ` QGraphicsScene`. Lorsque ` QGraphicsScene ` dessine le contenu de la scène, il effectue le rendu de chacune de ces couches séparément, dans l'ordre.

Chaque couche correspond à un indicateur pouvant être combiné à d’autres par opération OR lors de l’appel de fonctions telles que ` invalidate()` ou ` QGraphicsView::invalidateScene()`.

ConstanteValeurDescription
QGraphicsScene::ItemLayer0x1Le calque des éléments. La fonction QGraphicsScene affiche tous les éléments de ce calque en appelant la fonction virtuelle drawItems(). Le calque des éléments est affiché après le calque d'arrière-plan, mais avant le calque de premier plan.
QGraphicsScene::BackgroundLayer0x2Le calque d’arrière-plan. La fonction ` QGraphicsScene ` affiche l’arrière-plan de la scène dans ce calque en appelant la fonction virtuelle ` drawBackground()`. Le calque d’arrière-plan est dessiné en premier parmi tous les calques.
QGraphicsScene::ForegroundLayer0x4Le calque de premier plan. QGraphicsScene affiche le premier plan de la scène dans ce calque en appelant la fonction virtuelle drawForeground(). Le calque de premier plan est dessiné en dernier parmi tous les calques.
QGraphicsScene::AllLayers0xffffToutes les couches ; cette valeur représente une combinaison des trois couches.

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

Voir également invalidate() et QGraphicsView::invalidateScene().

Documentation des propriétés

backgroundBrush : QBrush

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

Définissez cette propriété pour modifier l'arrière-plan de la scène et lui attribuer une autre couleur, un dégradé ou une texture. Le pinceau d'arrière-plan par défaut est Qt::NoBrush. L'arrière-plan est dessiné avant (derrière) les éléments.

Exemple :

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

// a blue background
scene.setBackgroundBrush(Qt::blue);

// a gradient background
QRadialGradient gradient(0, 0, 10);
gradient.setSpread(QGradient::RepeatSpread);
scene.setBackgroundBrush(gradient);

QGraphicsScene::render() appelle la méthode drawBackground() pour dessiner l'arrière-plan de la scène. Pour contrôler plus précisément la manière dont l'arrière-plan est dessiné, vous pouvez réimplémenter la méthode drawBackground() dans une sous-classe de QGraphicsScene.

Fonctions d'accès :

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

bspTreeDepth : int

Cette propriété indique la profondeur de l'arbre d'index BSP de « QGraphicsScene »

Cette propriété n’a aucun effet lorsque « NoIndex » est utilisé.

Cette valeur détermine la profondeur de l’arbre BSP d’ QGraphicsScene. La profondeur affecte directement les performances d’ QGraphicsScene ainsi que l’utilisation de la mémoire ; cette dernière augmentant de manière exponentielle avec la profondeur de l’arbre. Avec une profondeur d’arbre optimale, QGraphicsScene peut déterminer instantanément la localisation des éléments, même pour des scènes comportant des milliers ou des millions d’éléments. Cela améliore également considérablement les performances de rendu.

Par défaut, la valeur est 0 ; dans ce cas, Qt devine une profondeur par défaut raisonnable en fonction de la taille, de l’emplacement et du nombre d’éléments dans la scène. Toutefois, si ces paramètres changent fréquemment, vous risquez de constater des ralentissements, car QGraphicsScene réajuste la profondeur en interne. Vous pouvez éviter ces ralentissements potentiels en fixant la profondeur de l’arborescence via cette propriété.

La profondeur de l’arbre et la taille du rectangle de la scène déterminent la granularité du partitionnement de la scène. La taille de chaque segment de scène est déterminée par l’algorithme suivant :

QSizeF segmentSize = sceneRect().size() / pow(2, depth - 1);

L’arbre BSP atteint une taille optimale lorsque chaque segment contient entre 0 et 10 éléments.

Fonctions d’accès :

int bspTreeDepth() const
void setBspTreeDepth(int depth)

Voir également itemIndexMethod.

focusOnTouch : bool

Cette propriété indique si les éléments reçoivent le focus lorsqu’ils reçoivent un événement « touch begin ».

Le comportement habituel consiste à ne transférer le focus que lorsqu'un élément est cliqué. Souvent, un tapotement sur un pavé tactile est interprété par le système d'exploitation comme équivalent à un clic de souris, ce qui génère un événement de clic synthétique en réponse. Cependant, sur macOS au moins, vous pouvez configurer ce comportement.

Par défaut, QGraphicsScene transfère également le focus lorsque vous touchez un pavé tactile ou un périphérique similaire. Si le système d'exploitation est configuré pour ne pas générer de clic de souris synthétique lors d'un tapotement sur le pavé tactile, ce comportement peut paraître surprenant. Si, au contraire, le système d'exploitation génère des clics de souris synthétiques lors d'un tapotement sur le pavé tactile, le transfert du focus au début d'un geste tactile n'est pas nécessaire.

Lorsque focusOnTouch est désactivé, QGraphicsScene se comporte comme on peut s’y attendre sous macOS.

La valeur par défaut est « true », ce qui garantit que le comportement par défaut est identique à celui des versions de Qt antérieures à la 5.12. Définissez cette option sur « false » pour empêcher les événements tactiles de déclencher des changements de focus.

Fonctions d’accès :

bool focusOnTouch() const
void setFocusOnTouch(bool enabled)

font : QFont

Cette propriété définit la police par défaut de la scène

Cette propriété fournit la police de la scène. La police par défaut de la scène est définie par QApplication::font, à partir de laquelle toutes ses entrées sont résolues.

Si la police de la scène change, soit directement via la méthode setFont(), soit indirectement lorsque la police de l’application change, « QGraphicsScene » envoie d’abord à elle-même un événement « FontChange », puis envoie des événements « FontChange » à tous les widgets de niveau supérieur de la scène. Ces éléments réagissent en appliquant leurs propres polices à la scène, puis informent leurs enfants, qui à leur tour informent leurs propres enfants, et ainsi de suite, jusqu’à ce que tous les widgets aient mis à jour leurs polices.

La modification de la police de la scène (directement ou indirectement via ` QApplication::setFont()`) déclenche automatiquement un rafraîchissement de l'ensemble de la scène.

Fonctions d’accès :

QFont font() const
void setFont(const QFont &font)

Voir également QWidget::font, QApplication::setFont(), palette et style().

foregroundBrush : QBrush

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

Modifiez cette propriété pour définir le premier plan de la scène avec une autre couleur, un dégradé ou une texture.

Le premier plan est dessiné après (par-dessus) les éléments. Le pinceau de premier plan par défaut est « Qt::NoBrush » (c'est-à-dire que le premier plan n'est pas dessiné).

Exemple :

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

// a white semi-transparent foreground
scene.setForegroundBrush(QColor(255, 255, 255, 127));

// a grid foreground
scene.setForegroundBrush(QBrush(Qt::lightGray, Qt::CrossPattern));

QGraphicsScene::render() appelle la fonction « drawForeground » () pour dessiner le premier plan de la scène. Pour un contrôle plus précis sur la manière dont le premier plan est dessiné, vous pouvez réimplémenter la fonction « drawForeground » () dans une sous-classe de « QGraphicsScene ».

Fonctions d’accès :

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

itemIndexMethod : ItemIndexMethod

Cette propriété contient la méthode d'indexation des éléments.

QGraphicsScene Elle applique un algorithme d'indexation à la scène afin d'accélérer les fonctions de recherche d'éléments telles que items() et itemAt(). L'indexation est particulièrement efficace pour les scènes statiques (c'est-à-dire celles où les éléments ne se déplacent pas). Pour les scènes dynamiques ou comportant de nombreux éléments animés, la gestion de l'index peut l'emporter sur les gains de vitesse obtenus lors des recherches.

Dans la plupart des cas, la méthode d'indexation par défaut BspTreeIndex fonctionne très bien. Si votre scène utilise de nombreuses animations et que vous constatez des ralentissements, vous pouvez désactiver l'indexation en appelant setItemIndexMethod(NoIndex).

Fonctions d'accès :

QGraphicsScene::ItemIndexMethod itemIndexMethod() const
void setItemIndexMethod(QGraphicsScene::ItemIndexMethod method)

Voir également bspTreeDepth.

minimumRenderSize : qreal

Cette propriété définit la taille minimale, après transformation selon la vue, qu’un élément doit avoir pour être affiché

Lors du rendu de la scène, tout élément dont la largeur ou la hauteur, transformée selon la vue cible, est inférieure à minimumRenderSize(), ne sera pas affiché. Si un élément n'est pas affiché et qu'il recouvre ses éléments enfants, ceux-ci ne seront pas affichés non plus. Définissez cette valeur pour accélérer le rendu des scènes comportant de nombreux objets affichés dans une vue dézoomée.

La valeur par défaut est 0. Si cette propriété n’est pas définie, ou si elle est définie sur 0 ou sur une valeur négative, tous les éléments seront toujours affichés.

Par exemple, la configuration de cette propriété peut s’avérer particulièrement utile si une scène est rendue par plusieurs vues, dont l’une sert de vue d’ensemble et affiche toujours tous les éléments. Dans les scènes comportant de nombreux éléments, une telle vue utilisera un facteur d’échelle élevé afin que tous les éléments puissent être affichés. En raison de cette mise à l’échelle, les éléments les plus petits n’auront qu’une contribution négligeable à la scène finale rendue. Pour éviter de dessiner ces éléments et réduire le temps nécessaire au rendu de la scène, vous pouvez appeler la méthode `setMinimumRenderSize()` avec une valeur non négative.

Remarque : les éléments qui ne sont pas dessinés parce qu’ils sont trop petits sont tout de même renvoyés par des méthodes telles que items() et itemAt(), et participent à la détection des collisions et aux interactions. Il est recommandé de définir minimumRenderSize() sur une valeur inférieure ou égale à 1 afin d’éviter que de grands éléments non rendus ne restent interactifs.

Fonctions d'accès :

qreal minimumRenderSize() const
void setMinimumRenderSize(qreal minSize)

Voir également ` QStyleOptionGraphicsItem::levelOfDetailFromTransform()`.

palette : QPalette

Cette propriété contient la palette par défaut de la scène

Cette propriété fournit la palette de la scène. La palette de la scène est définie par défaut sur QApplication::palette et toutes ses entrées proviennent de ce site.

Si la palette de la scène change, soit directement via `setPalette()`, soit indirectement lorsque la palette de l’application change, ` QGraphicsScene ` s’envoie d’abord un événement ` PaletteChange `, puis envoie des événements ` PaletteChange ` à tous les widgets de niveau supérieur de la scène. Ces éléments réagissent en adaptant leurs propres palettes à celle de la scène, puis ils informent leurs enfants, qui à leur tour informent leurs propres enfants, et ainsi de suite, jusqu’à ce que tous les éléments de la scène aient mis à jour leurs palettes.

La modification de la palette de la scène (directement ou indirectement via ` QApplication::setPalette()`) déclenche automatiquement un rafraîchissement de l’ensemble de la scène.

Fonctions d’accès :

QPalette palette() const
void setPalette(const QPalette &palette)

Voir également QWidget::palette, QApplication::setPalette(), font et style().

sceneRect : QRectF

Cette propriété contient le rectangle de la scène ; le rectangle englobant de la scène

Le rectangle de la scène définit l’étendue de celle-ci. Il est principalement utilisé par QGraphicsView pour déterminer la zone de défilement par défaut de la vue, et par QGraphicsScene pour gérer l’indexation des éléments.

Si elle n’est pas définie, ou si elle est définie sur une valeur nulle QRectF, la fonction sceneRect() renverra le plus grand rectangle englobant de tous les éléments présents sur la scène depuis sa création (c’est-à-dire un rectangle qui s’agrandit lorsque des éléments sont ajoutés ou déplacés dans la scène, mais qui ne rétrécit jamais).

Fonctions d’accès :

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

Voir également width(), height() et QGraphicsView::sceneRect.

stickyFocus : bool

Cette propriété détermine si le fait de cliquer sur l'arrière-plan de la scène fait perdre le focus

Dans une instance de ` QGraphicsScene ` dont la propriété `stickyFocus` est définie sur `true`, le focus reste inchangé lorsque l'utilisateur clique sur l'arrière-plan de la scène ou sur un élément qui n'accepte pas le focus. Dans le cas contraire, le focus est perdu.

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

Le focus change en réponse à un clic de souris. Vous pouvez réimplémenter la méthode ` mousePressEvent()` dans une sous-classe de ` QGraphicsScene ` pour activer ou désactiver cette propriété en fonction de l'endroit où l'utilisateur a cliqué.

Fonctions d’accès :

bool stickyFocus() const
void setStickyFocus(bool enabled)

Voir également ` clearFocus()` et ` setFocusItem()`.

Documentation des fonctions membres

QGraphicsScene::QGraphicsScene(QObject *parent = nullptr)

Crée un objet `QGraphicsScene`. Le paramètre ` parent ` est transmis au constructeur de ` QObject`.

QGraphicsScene::QGraphicsScene(const QRectF &sceneRect, QObject *parent = nullptr)

Crée un objet `QGraphicsScene` en utilisant ` sceneRect ` comme rectangle de scène. Le paramètre ` parent ` est transmis au constructeur de ` QObject`.

Voir également sceneRect.

QGraphicsScene::QGraphicsScene(qreal x, qreal y, qreal width, qreal height, QObject *parent = nullptr)

Crée un objet `QGraphicsScene` en utilisant le rectangle spécifié par (x, y), ainsi que les paramètres ` width ` et ` height ` fournis pour son rectangle de scène. Le paramètre ` parent ` est transmis au constructeur de ` QObject`.

Voir également sceneRect.

[virtual noexcept] QGraphicsScene::~QGraphicsScene()

Supprime tous les éléments de l'objet « scène » avant de détruire ce dernier. L'objet « scène » est retiré de la liste globale des scènes de l'application, ainsi que de toutes les vues associées.

QGraphicsItem *QGraphicsScene::activePanel() const

Renvoie le panneau actuellement actif, ou ` nullptr ` si aucun panneau n'est actif.

Voir aussi QGraphicsScene::setActivePanel().

QGraphicsWidget *QGraphicsScene::activeWindow() const

Renvoie la fenêtre actuellement active, ou ` nullptr ` si aucune fenêtre n'est active.

Voir aussi QGraphicsScene::setActiveWindow().

QGraphicsEllipseItem *QGraphicsScene::addEllipse(const QRectF &rect, const QPen &pen = QPen(), const QBrush &brush = QBrush())

Crée et ajoute un élément « ellipse » à la scène, puis renvoie le pointeur vers cet élément. La géométrie de l'ellipse est définie par rect, et son stylo ainsi que son pinceau sont initialisés respectivement à pen et brush.

Notez que la géométrie de l'élément est fournie en coordonnées de l'élément, et que sa position est initialisée à (0, 0).

Si l’élément est visible (c’est-à-dire que QGraphicsItem::isVisible() renvoie true), QGraphicsScene émettra changed() dès que le contrôle reviendra à la boucle d’événements.

Voir également addLine(), addPath(), addPixmap(), addRect(), addText(), addItem() et addWidget().

QGraphicsEllipseItem *QGraphicsScene::addEllipse(qreal x, qreal y, qreal w, qreal h, const QPen &pen = QPen(), const QBrush &brush = QBrush())

Cette fonction pratique équivaut à appeler addEllipse(QRectF(x, y, w, h), pen, brush).

void QGraphicsScene::addItem(QGraphicsItem *item)

Ajoute ou déplace l'item et tous ses éléments enfants vers cette scène. Cette scène devient propriétaire de l'item.

Si l’élément est visible (c’est-à-dire si la fonction ` QGraphicsItem::isVisible()` renvoie `true`), ` QGraphicsScene ` émettra l’événement ` changed()` dès que le contrôle reviendra à la boucle d’événements.

Si l’élément se trouve déjà dans une autre scène, il sera d’abord retiré de son ancienne scène, puis ajouté à cette scène en tant qu’élément de niveau supérieur.

QGraphicsScene enverra des notifications ItemSceneChange à item pendant son ajout à la scène. Si l’élément n’appartient pas actuellement à une scène, une seule notification est envoyée. S’il appartient déjà à une scène (c’est-à-dire s’il est déplacé vers cette scène), QGraphicsScene enverra une notification supplémentaire lorsque l’élément sera retiré de sa scène précédente.

Si l’élément est un panneau, que la scène est active et qu’il n’y a pas de panneau actif dans la scène, alors l’élément sera activé.

Voir également removeItem(), addEllipse(), addLine(), addPath(), addPixmap(), addRect(), addText(), addWidget() et Sorting.

QGraphicsLineItem *QGraphicsScene::addLine(const QLineF &line, const QPen &pen = QPen())

Crée et ajoute un élément de ligne à la scène, puis renvoie le pointeur vers cet élément. La géométrie de la ligne est définie par line, et son stylo est initialisé à pen.

Notez que la géométrie de l’élément est fournie en coordonnées de l’élément, et que sa position est initialisée à (0, 0).

Si l’élément est visible (c’est-à-dire si QGraphicsItem::isVisible() renvoie true), QGraphicsScene émettra changed() dès que le contrôle reviendra à la boucle d’événements.

Voir également addEllipse(), addPath(), addPixmap(), addRect(), addText(), addItem() et addWidget().

QGraphicsLineItem *QGraphicsScene::addLine(qreal x1, qreal y1, qreal x2, qreal y2, const QPen &pen = QPen())

Cette fonction pratique revient à appeler `addLine(QLineF(x1, y1, x2, y2), pen)`.

QGraphicsPathItem *QGraphicsScene::addPath(const QPainterPath &path, const QPen &pen = QPen(), const QBrush &brush = QBrush())

Crée et ajoute un élément de tracé à la scène, puis renvoie le pointeur vers cet élément. La géométrie du tracé est définie par path, et son stylo ainsi que son pinceau sont initialisés respectivement à pen et brush.

Notez que la géométrie de l'élément est fournie en coordonnées de l'élément, et que sa position est initialisée à (0, 0).

Si l’élément est visible (c’est-à-dire que QGraphicsItem::isVisible() renvoie true), QGraphicsScene émettra changed() dès que le contrôle reviendra à la boucle d’événements.

Voir également addEllipse(), addLine(), addPixmap(), addRect(), addText(), addItem() et addWidget().

QGraphicsPixmapItem *QGraphicsScene::addPixmap(const QPixmap &pixmap)

Crée et ajoute un élément « pixmap » à la scène, puis renvoie le pointeur vers cet élément. Le pixmap est défini par pixmap.

Notez que la géométrie de l’élément est fournie en coordonnées de l’élément et que sa position est initialisée à (0, 0).

Si l’élément est visible (c’est-à-dire si la fonction ` QGraphicsItem::isVisible()` renvoie ` true`), la fonction ` QGraphicsScene ` émettra un événement ` changed()` dès que le contrôle reviendra à la boucle d’événements.

Voir également addEllipse(), addLine(), addPath(), addRect(), addText(), addItem() et addWidget().

QGraphicsPolygonItem *QGraphicsScene::addPolygon(const QPolygonF &polygon, const QPen &pen = QPen(), const QBrush &brush = QBrush())

Crée et ajoute un élément polygonal à la scène, puis renvoie le pointeur vers cet élément. Le polygone est défini par polygon, et son stylo ainsi que son pinceau sont initialisés respectivement à pen et brush.

Notez que la géométrie de l’élément est fournie en coordonnées de l’élément, et que sa position est initialisée à (0, 0).

Si l’élément est visible (c’est-à-dire que QGraphicsItem::isVisible() renvoie true), QGraphicsScene émettra changed() dès que le contrôle reviendra à la boucle d’événements.

Voir également addEllipse(), addLine(), addPath(), addRect(), addText(), addItem() et addWidget().

QGraphicsRectItem *QGraphicsScene::addRect(const QRectF &rect, const QPen &pen = QPen(), const QBrush &brush = QBrush())

Crée et ajoute un élément rectangulaire à la scène, puis renvoie le pointeur vers cet élément. La géométrie du rectangle est définie par rect, et son stylo ainsi que son pinceau sont initialisés respectivement à pen et brush.

Notez que la géométrie de l'élément est fournie en coordonnées de l'élément, et que sa position est initialisée à (0, 0). Par exemple, si un QRect(50, 50, 100, 100) est ajouté, son coin supérieur gauche se trouvera à (50, 50) par rapport à l’origine dans le système de coordonnées de l’élément.

Si l’élément est visible (c’est-à-dire si la fonction ` QGraphicsItem::isVisible()` renvoie ` true`), ` QGraphicsScene ` émettra un événement ` changed()` dès que le contrôle reviendra à la boucle d’événements.

Voir également addEllipse(), addLine(), addPixmap(), addText(), addItem() et addWidget().

QGraphicsRectItem *QGraphicsScene::addRect(qreal x, qreal y, qreal w, qreal h, const QPen &pen = QPen(), const QBrush &brush = QBrush())

Cette fonction pratique équivaut à appeler addRect(QRectF(x, y, w, h), pen, brush).

QGraphicsSimpleTextItem *QGraphicsScene::addSimpleText(const QString &text, const QFont &font = QFont())

Crée et ajoute un élément « QGraphicsSimpleTextItem » à la scène, puis renvoie le pointeur vers cet élément. La chaîne de texte est initialisée à « text », et sa police est initialisée à « font ».

La position de l'élément est initialisée à (0, 0).

Si l’élément est visible (c’est-à-dire que la fonction QGraphicsItem::isVisible() renvoie true), QGraphicsScene émettra l’événement changed() dès que le contrôle reviendra à la boucle d’événements.

Voir également addEllipse(), addLine(), addPixmap(), addRect(), addItem() et addWidget().

QGraphicsTextItem *QGraphicsScene::addText(const QString &text, const QFont &font = QFont())

Crée et ajoute un élément de texte à la scène, puis renvoie le pointeur vers cet élément. La chaîne de texte est initialisée à « text », et sa police est initialisée à « font ».

La position de l'élément est initialisée à (0, 0).

Si l’élément est visible (c’est-à-dire si QGraphicsItem::isVisible() renvoie true), QGraphicsScene émettra changed() dès que le contrôle reviendra à la boucle d’événements.

Voir également addEllipse(), addLine(), addPixmap(), addRect(), addItem() et addWidget().

QGraphicsProxyWidget *QGraphicsScene::addWidget(QWidget *widget, Qt::WindowFlags wFlags = Qt::WindowFlags())

Crée un nouveau proxy QGraphicsProxyWidget pour widget, l'ajoute à la scène et renvoie un pointeur vers ce proxy. wFlags définit les indicateurs de fenêtre par défaut pour le widget proxy d'intégration.

La position de l’élément est initialisée à (0, 0).

Si l'élément est visible (c'est-à-dire si QGraphicsItem::isVisible() renvoie true), QGraphicsScene émettra changed() dès que le contrôle reviendra à la boucle d'événements.

Notez que les widgets pour lesquels l’attribut « Qt::WA_PaintOnScreen » est défini, ainsi que ceux qui encapsulent une application ou un contrôleur externe, ne sont pas pris en charge. Citons par exemple QOpenGLWidget et QAxWidget.

Voir également addEllipse(), addLine(), addPixmap(), addRect(), addText(), addSimpleText() et addItem().

[slot] void QGraphicsScene::advance()

Cet emplacement fait avancer la scène d'une étape, en appelant la fonction QGraphicsItem::advance() pour tous les éléments présents sur la scène. Cela se déroule en deux phases : lors de la première phase, tous les éléments sont informés que la scène est sur le point de changer, et lors de la seconde phase, tous les éléments sont informés qu'ils peuvent se déplacer. Au cours de la première phase, la méthode ` QGraphicsItem::advance()` est appelée avec la valeur 0 en argument, tandis que la valeur 1 est transmise lors de la deuxième phase.

Notez que vous pouvez également utiliser le framework d’animation pour les animations.

Voir également QGraphicsItem::advance() et QTimeLine.

[signal] void QGraphicsScene::changed(const QList<QRectF> &region)

Ce signal est émis par ` QGraphicsScene ` lorsque le contrôle atteint la boucle d'événements, si le contenu de la scène change. Le paramètre ` region ` contient une liste de rectangles de scène indiquant la zone qui a été modifiée.

Voir également QGraphicsView::updateScene().

[slot] void QGraphicsScene::clear()

Supprime tous les éléments de la scène, mais laisse par ailleurs l'état de la scène inchangé.

Voir aussi addItem().

void QGraphicsScene::clearFocus()

Retire le focus de la scène. Si un élément a le focus au moment où cette fonction est appelée, il le perdra, puis le récupérera dès que la scène aura à nouveau le focus.

Une scène qui n'a pas le focus ignore les événements de touche.

Voir également hasFocus(), setFocus() et setFocusItem().

[slot] void QGraphicsScene::clearSelection()

Efface la sélection actuelle.

Voir également setSelectionArea() et selectedItems().

QList<QGraphicsItem *> QGraphicsScene::collidingItems(const QGraphicsItem *item, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const

Renvoie une liste de tous les éléments qui entrent en collision avec item. Les collisions sont déterminées en appelant QGraphicsItem::collidesWithItem() ; la détection des collisions est définie par mode. Par défaut, tous les éléments dont la forme coupe item ou qui sont contenus dans la forme de item sont renvoyés.

Les éléments sont renvoyés par ordre d’empilement décroissant (c’est-à-dire que le premier élément de la liste est celui situé tout en haut, et le dernier élément est celui situé tout en bas).

Voir également items(), itemAt(), QGraphicsItem::collidesWithItem() et Sorting.

[virtual protected] void QGraphicsScene::contextMenuEvent(QGraphicsSceneContextMenuEvent *contextMenuEvent)

Ce gestionnaire d'événements, destiné à l'événement « contextMenuEvent », peut être réimplémenté dans une sous-classe afin de recevoir des événements de menu contextuel. L'implémentation par défaut transmet l'événement à l'élément visible le plus en haut qui accepte les événements de menu contextuel à la position de l'événement. Si aucun élément n'accepte les événements de menu contextuel à cette position, l'événement est ignoré.

Remarque : voir items() pour savoir quels éléments sont considérés comme visibles par cette fonction.

Voir également QGraphicsItem::contextMenuEvent().

QGraphicsItemGroup *QGraphicsScene::createItemGroup(const QList<QGraphicsItem *> &items)

Regroupe tous les éléments de ` items ` au sein d'un nouveau groupe ` QGraphicsItemGroup` et renvoie un pointeur vers ce groupe. Le groupe est créé avec comme parent l’ancêtre commun de items, et avec la position (0, 0). Tous les éléments sont rattachés au groupe, et leurs positions ainsi que leurs transformations sont mappées sur le groupe. Si items est vide, cette fonction renvoie un QGraphicsItemGroup de niveau supérieur vide.

QGraphicsScene est propriétaire de l’élément du groupe ; vous n’avez pas besoin de le supprimer. Pour démanteler (dégrouper) un groupe, appelez destroyItemGroup().

Voir également destroyItemGroup() et QGraphicsItemGroup::addToGroup().

void QGraphicsScene::destroyItemGroup(QGraphicsItemGroup *group)

Réaffecte tous les éléments de group à l'élément parent de group, puis supprime group de la scène, avant de le supprimer définitivement. Les positions et les transformations des éléments sont transférées du groupe vers son parent.

Voir également createItemGroup() et QGraphicsItemGroup::removeFromGroup().

[virtual protected] void QGraphicsScene::dragEnterEvent(QGraphicsSceneDragDropEvent *event)

Ce gestionnaire d'événements, destiné à l'événement « event », peut être réimplémenté dans une sous-classe afin de recevoir les événements «drag enter» pour la scène.

L'implémentation par défaut accepte l'événement et prépare la scène à recevoir les événements de déplacement par glissement.

Voir également QGraphicsItem::dragEnterEvent(), dragMoveEvent(), dragLeaveEvent() et dropEvent().

[virtual protected] void QGraphicsScene::dragLeaveEvent(QGraphicsSceneDragDropEvent *event)

Ce gestionnaire d'événements, destiné à l'événement « event », peut être réimplémenté dans une sous-classe afin de recevoir les événements de sortie de glissement pour la scène.

Voir également QGraphicsItem::dragLeaveEvent(), dragEnterEvent(), dragMoveEvent() et dropEvent().

[virtual protected] void QGraphicsScene::dragMoveEvent(QGraphicsSceneDragDropEvent *event)

Ce gestionnaire d'événements, destiné à l'événement « event », peut être réimplémenté dans une sous-classe afin de recevoir les événements de déplacement par glissement de la scène.

Remarque : voir ` items()` pour savoir quels éléments sont considérés comme visibles par cette fonction.

Voir également QGraphicsItem::dragMoveEvent(), dragEnterEvent(), dragLeaveEvent() et dropEvent().

[virtual protected] void QGraphicsScene::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é à la scène.

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

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.

Voir également ` drawForeground()` et ` drawItems()`.

[virtual protected] void QGraphicsScene::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 définir un premier plan personnalisé pour la scène.

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

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

Voir également drawBackground() et drawItems().

[virtual protected] void QGraphicsScene::dropEvent(QGraphicsSceneDragDropEvent *event)

Ce gestionnaire d'événements, destiné à l'événement event, peut être réimplémenté dans une sous-classe afin de recevoir les événements de dépose pour la scène.

Voir également QGraphicsItem::dropEvent(), dragEnterEvent(), dragMoveEvent() et dragLeaveEvent().

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

Réimplémente : QObject::event(QEvent *e).

Traite l'événement event et le transmet aux gestionnaires d'événements correspondants.

Outre l’appel des gestionnaires d’événements de commodité, cette fonction est chargée de convertir les événements de déplacement de la souris en événements de survol lorsqu’aucun élément de capture de souris n’est présent. Les événements de survol sont transmis directement aux éléments ; il n’existe pas de fonction de commodité pour ceux-ci.

Contrairement à ` QWidget`, ` QGraphicsScene ` ne dispose pas des fonctions de commodité ` enterEvent()` et ` leaveEvent()`. Utilisez cette fonction pour obtenir ces événements à la place.

Renvoie ` true ` si ` event ` a été reconnu et traité ; sinon, renvoie ` false`.

Voir également contextMenuEvent(), keyPressEvent(), keyReleaseEvent(), mousePressEvent(), mouseMoveEvent(), mouseReleaseEvent(), mouseDoubleClickEvent(), focusInEvent() et focusOutEvent().

[override virtual protected] bool QGraphicsScene::eventFilter(QObject *watched, QEvent *event)

Réimplémente : QObject::eventFilter(QObject *watched, QEvent *event).

QGraphicsScene Filtre les événements de ` QApplication` pour détecter les changements de palette et de police.

[virtual protected] void QGraphicsScene::focusInEvent(QFocusEvent *focusEvent)

Ce gestionnaire d'événement, destiné à l'événement « focusEvent », peut être réimplémenté dans une sous-classe afin de recevoir le focus lors d'événements.

L'implémentation par défaut place le focus sur la scène, puis sur le dernier élément ayant eu le focus.

Voir également ` QGraphicsItem::focusOutEvent()`.

QGraphicsItem *QGraphicsScene::focusItem() const

Lorsque la scène est active, cette fonction renvoie l'élément actuellement sélectionné dans la scène, ou ` nullptr ` si aucun élément n'est actuellement sélectionné. Lorsque la scène est inactive, cette fonction renvoie l'élément qui sera sélectionné dès que la scène deviendra active.

L'élément sélectionné reçoit les entrées clavier lorsque la scène reçoit un événement de touche.

Voir également setFocusItem(), QGraphicsItem::hasFocus() et isActive().

[signal] void QGraphicsScene::focusItemChanged(QGraphicsItem *newFocusItem, QGraphicsItem *oldFocusItem, Qt::FocusReason reason)

Ce signal est émis par ` QGraphicsScene ` chaque fois que le focus change dans la scène (c'est-à-dire lorsqu'un élément obtient ou perd le focus de saisie, ou lorsque le focus passe d'un élément à un autre). Vous pouvez vous connecter à ce signal si vous avez besoin de savoir quand d'autres éléments obtiennent le focus d'entrée. Cela s'avère particulièrement utile pour implémenter des claviers virtuels, des méthodes de saisie et des éléments de curseur.

oldFocusItem est un pointeur vers l'élément qui détenait précédemment le focus, ou 0 si aucun élément ne détenait le focus avant l'émission du signal. newFocusItem est un pointeur vers l'élément qui a obtenu le focus de saisie, ou nullptr si le focus a été perdu. reason est la raison du changement de focus (par exemple, si la scène a été désactivée alors qu’un champ de saisie avait le focus, oldFocusItem pointerait vers l’élément du champ de saisie, newFocusItem serait nullptr, et reason serait Qt::ActiveWindowFocusReason.

[virtual protected slot] bool QGraphicsScene::focusNextPrevChild(bool next)

Recherche un nouveau widget auquel attribuer le focus du clavier, selon le cas pour les touches Tab et Maj+Tab, et renvoie ` true ` si elle trouve un nouveau widget, ou `false` dans le cas contraire. Si ` next ` est vrai, cette fonction effectue une recherche vers l’avant ; si ` next ` est faux, elle effectue une recherche vers l’arrière.

Vous pouvez réimplémenter cette fonction dans une sous-classe de ` QGraphicsScene ` afin de contrôler de manière plus précise la manière dont le focus du tabulation se déplace au sein de votre scène. L’implémentation par défaut repose sur la chaîne de focus du tabulation définie par ` QGraphicsWidget::setTabOrder()` ().

[virtual protected] void QGraphicsScene::focusOutEvent(QFocusEvent *focusEvent)

Ce gestionnaire d'événement, destiné à l'événement « focusEvent », peut être réimplémenté dans une sous-classe afin de recevoir les événements de perte de focus.

L'implémentation par défaut retire le focus de tout élément sélectionné, puis retire le focus de la scène.

Voir également ` QGraphicsItem::focusInEvent()`.

bool QGraphicsScene::hasFocus() const

Renvoie « true » si la scène a le focus ; sinon, renvoie « false ». Si la scène a le focus, elle transmettra les événements de touche provenant de « QKeyEvent » à tout élément ayant le focus.

Voir également setFocus() et setFocusItem().

qreal QGraphicsScene::height() const

Cette fonction pratique revient à appeler sceneRect().height().

Voir également width().

[virtual protected] void QGraphicsScene::helpEvent(QGraphicsSceneHelpEvent *helpEvent)

Ce gestionnaire d'événements, destiné à l'événement « helpEvent », peut être réimplémenté dans une sous-classe afin de recevoir des événements d'aide. Ces événements sont de type « QEvent::ToolTip » et sont créés lorsqu'une info-bulle est demandée.

L'implémentation par défaut affiche l'info-bulle de l'élément visible le plus en haut, c'est-à-dire celui qui possède la valeur z la plus élevée, à la position du curseur de la souris. Si aucun élément ne dispose d'une info-bulle, cette fonction ne fait rien.

Remarque : voir ` items()` pour savoir quels éléments sont considérés comme visibles par cette fonction.

Voir également QGraphicsItem::toolTip() et QGraphicsSceneHelpEvent.

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

Ce gestionnaire d'événements, destiné à l'événement ` event`, peut être réimplémenté dans une sous-classe afin de recevoir les événements liés aux méthodes de saisie pour la scène.

L'implémentation par défaut transmet l'événement à la fonction focusItem(). Si aucun élément n'a actuellement le focus ou si l'élément ayant le focus n'accepte pas les méthodes de saisie, cette fonction ne fait rien.

Voir également ` QGraphicsItem::inputMethodEvent()`.

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

Cette méthode est utilisée par les méthodes de saisie pour interroger un ensemble de propriétés de la scène afin de pouvoir prendre en charge des opérations complexes, telles que la gestion du texte environnant et les reconversions.

Le paramètre ` query ` spécifie la propriété à interroger.

Voir également QWidget::inputMethodQuery().

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

Invalide et planifie un rafraîchissement de l’ layers dans rect sur la scène. Tout contenu mis en cache dans layers est invalidé sans condition et rafraîchi.

Vous pouvez utiliser cette surcharge de fonction pour signaler à QGraphicsScene les modifications apportées à l’arrière-plan ou au premier plan de la scène. Cette fonction est couramment utilisée pour les scènes dont l’arrière-plan est constitué de tuiles, afin de signaler les modifications lorsque QGraphicsView a activé CacheBackground.

Exemple :

QRectF TileScene::rectForTile(int x, int y) const
{
    // Return the rectangle for the tile at position (x, y).
    return QRectF(x * tileWidth, y * tileHeight, tileWidth, tileHeight);
}

void TileScene::setTile(int x, int y, const QPixmap &pixmap)
{
    // Sets or replaces the tile at position (x, y) with pixmap.
    if (x >= 0 && x < numTilesH && y >= 0 && y < numTilesV) {
        tiles[y][x] = pixmap;
        invalidate(rectForTile(x, y), BackgroundLayer);
    }
}

void TileScene::drawBackground(QPainter *painter, const QRectF &exposed)
{
    // Draws all tiles that intersect the exposed area.
    for (int y = 0; y < numTilesV; ++y) {
        for (int x = 0; x < numTilesH; ++x) {
            QRectF rect = rectForTile(x, y);
            if (exposed.intersects(rect))
                painter->drawPixmap(rect.topLeft(), tiles[y][x]);
        }
    }
}

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 une couche autre que BackgroundLayer est transmise.

Remarque : ce slot est surchargé. Pour vous connecter à ce slot :

// Connect using qOverload:
connect(sender, &SenderClass::signal,
        graphicsScene, qOverload(&QGraphicsScene::invalidate));

// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
        graphicsScene, [receiver = graphicsScene](const QRectF &rect, QGraphicsScene::SceneLayers layers) { receiver->invalidate(rect, layers); });
Pour plus d’exemples et d’approches, voir la section « Connexion à des slots surchargés ».

Voir également ` QGraphicsView::resetCachedContent()`.

void QGraphicsScene::invalidate(qreal x, qreal y, qreal w, qreal h, QGraphicsScene::SceneLayers layers = AllLayers)

Cette fonction de commodité équivaut à appeler `invalidate(QRectF(x, y, w, h), layers) ;`

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

bool QGraphicsScene::isActive() const

Renvoie ` true ` si la scène est active (par exemple, si elle est visualisée par au moins une instance ` QGraphicsView ` active) ; sinon, renvoie ` false`.

Voir également QGraphicsItem::isActive() et QWidget::isActiveWindow().

QGraphicsItem *QGraphicsScene::itemAt(const QPointF &position, const QTransform &deviceTransform) const

Renvoie l'élément visible situé tout en haut à l'position spécifiée, ou nullptr s'il n'y a aucun élément à cette position.

deviceTransform est la transformation qui s'applique à la vue ; elle doit être fournie si la scène contient des éléments qui ignorent les transformations.

Remarque : voir items() pour savoir quels éléments sont considérés comme visibles par cette fonction.

Voir également items(), collidingItems() et Sorting.

QGraphicsItem *QGraphicsScene::itemAt(qreal x, qreal y, const QTransform &deviceTransform) const

Renvoie l'élément visible le plus en avant à la position spécifiée par (x, y), ou nullptr s'il n'y a aucun élément à cette position.

deviceTransform est la transformation qui s'applique à la vue ; elle doit être fournie si la scène contient des éléments qui ignorent les transformations.

Cette fonction pratique équivaut à l'appel de ` itemAt(QPointF(x, y), deviceTransform)`.

Remarque : voir items() pour savoir quels éléments sont considérés comme visibles par cette fonction.

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

QList<QGraphicsItem *> QGraphicsScene::items(Qt::SortOrder order = Qt::DescendingOrder) const

Renvoie une liste ordonnée de tous les éléments présents dans la scène. L'ordre d'empilement est déterminé par ` order `.

Voir également addItem(), removeItem() et Sorting.

QList<QGraphicsItem *> QGraphicsScene::items(const QPointF &pos, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const

Renvoie tous les éléments visibles qui, selon la propriété « mode », se trouvent à l’ pos spécifiée, sous la forme d’une liste triée selon la propriété « order ». Dans ce cas, le terme « visible » désigne les éléments pour lesquels : la méthode `isVisible()` renvoie ` true`, la méthode `effectiveOpacity()` renvoie une valeur supérieure à 0,0 (ce qui correspond à une transparence totale) et l’élément parent ne les recoupe pas.

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

deviceTransform est la transformation qui s'applique à la vue ; elle doit être fournie si la scène contient des éléments qui ignorent les transformations.

Voir également itemAt() et Sorting.

QList<QGraphicsItem *> QGraphicsScene::items(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const

Renvoie tous les éléments visibles qui, selon la propriété ` mode`, se trouvent soit à l'intérieur de l'élément spécifié ` path`, soit en intersection avec celui-ci, sous la forme d'une liste triée selon la propriété ` order`. Dans ce cas, le terme « visible » désigne les éléments pour lesquels : la méthode `isVisible()` renvoie ` true`, la méthode `effectiveOpacity()` renvoie une valeur supérieure à 0,0 (ce qui correspond à une transparence totale) et l'élément parent ne les masque pas.

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.

deviceTransform est la transformation qui s’applique à la vue, et doit être fournie si la scène contient des éléments qui ignorent les transformations.

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

Voir également itemAt() et Sorting.

QList<QGraphicsItem *> QGraphicsScene::items(const QPolygonF &polygon, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const

Renvoie tous les éléments visibles qui, selon la propriété « mode », se trouvent soit à l’intérieur de l’élément spécifié « polygon », soit en intersection avec celui-ci, sous la forme d’une liste triée selon la propriété « order ». Dans ce cas, le terme « visible » désigne les éléments pour lesquels : la méthode « isVisible() » renvoie « true », la méthode « effectiveOpacity() » renvoie une valeur supérieure à 0,0 (ce qui correspond à une transparence totale) et l’élément parent ne les recoupe pas.

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.

deviceTransform est la transformation qui s’applique à la vue ; elle doit être fournie si la scène contient des éléments qui ignorent les transformations.

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

Voir également itemAt() et Sorting.

QList<QGraphicsItem *> QGraphicsScene::items(const QRectF &rect, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const

Renvoie tous les éléments visibles qui, selon la propriété ` mode`, se trouvent soit à l'intérieur de la zone spécifiée par ` rect`, soit en intersection avec celle-ci, sous la forme d'une liste triée selon la propriété ` order`. Dans ce cas, le terme « visible » désigne les éléments pour lesquels : la méthode `isVisible()` renvoie ` true`, la méthode `effectiveOpacity()` renvoie une valeur supérieure à 0,0 (ce qui correspond à une transparence totale) et l'élément parent ne les recoupe pas.

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

deviceTransform est la transformation qui s’applique à la vue ; elle doit être fournie si la scène contient des éléments qui ignorent les transformations.

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

Voir également itemAt() et Sorting.

QList<QGraphicsItem *> QGraphicsScene::items(qreal x, qreal y, qreal w, qreal h, Qt::ItemSelectionMode mode, Qt::SortOrder order, const QTransform &deviceTransform = QTransform()) const

Renvoie tous les éléments visibles qui, selon mode, se trouvent soit à l'intérieur, soit en intersection avec le rectangle défini par x, y, w et h, sous la forme d'une liste triée selon order. Dans ce cas, « visible » désigne les éléments pour lesquels : isVisible() renvoie true, effectiveOpacity() renvoie une valeur supérieure à 0,0 (ce qui correspond à une transparence totale) et l’élément parent ne les recoupe pas.

deviceTransform Il s'agit de la transformation qui s'applique à la vue ; elle doit être fournie si la scène contient des éléments qui ignorent les transformations.

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

QRectF QGraphicsScene::itemsBoundingRect() const

Calcule et renvoie le rectangle englobant de tous les éléments de la scène. Cette fonction parcourt tous les éléments ; de ce fait, elle peut s'avérer lente pour les scènes volumineuses.

Voir également sceneRect().

[virtual protected] void QGraphicsScene::keyPressEvent(QKeyEvent *keyEvent)

Ce gestionnaire d'événements, destiné à l'événement « keyEvent », peut être réimplémenté dans une sous-classe afin de recevoir les événements de frappe. L'implémentation par défaut transmet l'événement à l'élément actuellement sélectionné.

Voir également ` QGraphicsItem::keyPressEvent()` et ` focusItem()`.

[virtual protected] void QGraphicsScene::keyReleaseEvent(QKeyEvent *keyEvent)

Ce gestionnaire d'événements, destiné à l'événement « keyEvent », peut être réimplémenté dans une sous-classe afin de recevoir les événements de relâchement de touche. L'implémentation par défaut transfère l'événement à l'élément actuellement sélectionné.

Voir également ` QGraphicsItem::keyReleaseEvent()` et ` focusItem()`.

[virtual protected] void QGraphicsScene::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *mouseEvent)

Ce gestionnaire d'événements, destiné à l'événement mouseEvent, peut être réimplémenté dans une sous-classe afin de recevoir les événements de double-clic de la souris pour la scène.

Si un utilisateur double-clique sur la scène, celle-ci recevra d’abord un événement de pression de souris, suivi d’un événement de relâchement (c’est-à-dire un clic), puis d’un événement de double-clic, et enfin d’un événement de relâchement. Si l’événement de double-clic est transmis à un élément différent de celui qui a reçu les premiers événements d’enclenchement et de relâchement, il sera traité comme un événement d’enclenchement. Cependant, les événements de triple-clic ne sont pas traités comme des événements de double-clic dans ce cas.

L’implémentation par défaut est similaire à celle de mousePressEvent().

Remarque : voir items() pour savoir quels éléments sont considérés comme visibles par cette fonction.

Voir également QGraphicsItem::mousePressEvent(), QGraphicsItem::mouseMoveEvent(), QGraphicsItem::mouseReleaseEvent() et QGraphicsItem::setAcceptedMouseButtons().

QGraphicsItem *QGraphicsScene::mouseGrabberItem() const

Renvoie l’élément « mouse grabber » actuel, ou la valeur « nullptr » si aucun élément ne contrôle actuellement la souris. L’élément « mouse grabber » est celui qui reçoit tous les événements de souris envoyés à la scène.

Un élément devient « mouse grabber » lorsqu’il reçoit et accepte un événement de clic de souris, et il conserve ce statut jusqu’à ce que l’un des événements suivants se produise :

  • Si l’élément reçoit un événement de relâchement de la souris alors qu’aucun autre bouton n’est enfoncé, il perd le contrôle de la souris.
  • Si l’élément devient invisible (c’est-à-dire si quelqu’un appelle la méthode ` item->setVisible(false)`), ou s’il est désactivé (c’est-à-dire si quelqu’un appelle la méthode ` item->setEnabled(false)`), il perd le contrôle de la souris.
  • Si l’élément est supprimé de la scène, il perd le contrôle de la souris.

Si l’élément perd le contrôle de la souris, la scène ignorera tous les événements de souris jusqu’à ce qu’un nouvel élément prenne le contrôle de la souris (c’est-à-dire jusqu’à ce qu’un nouvel élément reçoive un événement de clic de souris).

[virtual protected] void QGraphicsScene::mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent)

Ce gestionnaire d'événement, destiné à l'événement « mouseEvent », peut être réimplémenté dans une sous-classe afin de recevoir les événements de déplacement de la souris pour la scène.

L'implémentation par défaut dépend de l'état du « mouse grabber ». S'il existe un élément « mouse grabber », l'événement est envoyé à celui-ci. S'il existe des éléments acceptant les événements de survol à la position actuelle, l'événement est converti en événement de survol et accepté ; sinon, il est ignoré.

Voir également QGraphicsItem::mousePressEvent(), QGraphicsItem::mouseReleaseEvent(), QGraphicsItem::mouseDoubleClickEvent() et QGraphicsItem::setAcceptedMouseButtons().

[virtual protected] void QGraphicsScene::mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent)

Ce gestionnaire d'événements, destiné à l'événement « mouseEvent », peut être réimplémenté dans une sous-classe afin de recevoir les événements de clic de souris pour la scène.

L’implémentation par défaut dépend de l’état de la scène. S’il existe un élément « mouse grabber », l’événement est envoyé à celui-ci. Sinon, il est transmis à l’élément visible le plus en haut qui accepte les événements de souris à la position de la scène indiquée par l’événement, et cet élément devient alors immédiatement l’élément « mouse grabber ».

S’il n’y a aucun élément à la position donnée sur la scène, la zone de sélection est réinitialisée, tout élément ayant le focus perd ce dernier, et l’événement est alors ignoré.

Remarque : voir items() pour savoir quels éléments sont considérés comme visibles par cette fonction.

Voir également QGraphicsItem::mousePressEvent() et QGraphicsItem::setAcceptedMouseButtons().

[virtual protected] void QGraphicsScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent)

Ce gestionnaire d'événement, destiné à l'événement « mouseEvent », peut être réimplémenté dans une sous-classe afin de recevoir les événements de relâchement de la souris pour la scène.

L'implémentation par défaut dépend de l'état du « mouse grabber ». S'il n'y a pas de « mouse grabber », l'événement est ignoré. Sinon, s'il existe un élément « mouse grabber », l'événement est envoyé à celui-ci. Si ce relâchement de souris correspond au dernier bouton enfoncé, l'élément « mouse grabber » perd alors le contrôle de la souris.

Voir également QGraphicsItem::mousePressEvent(), QGraphicsItem::mouseMoveEvent(), QGraphicsItem::mouseDoubleClickEvent() et QGraphicsItem::setAcceptedMouseButtons().

void QGraphicsScene::removeItem(QGraphicsItem *item)

Supprime l'élément item et tous ses enfants de la scène. La propriété de item est transférée à l'appelant (c'est-à-dire que QGraphicsScene ne supprimera plus item lors de sa destruction).

Voir également addItem().

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

Affiche le rectangle ` source ` de la scène dans ` target`, en utilisant ` painter`. Cette fonction est utile pour capturer le contenu de la scène sur un périphérique de dessin, tel qu’un ` QImage ` (par exemple, pour réaliser une capture d’écran), ou pour l’imprimer avec `QPrinter`. Par exemple :

QGraphicsScene scene;
scene.addItem(someItem);
//...
QPrinter printer(QPrinter::HighResolution);
printer.setPageSize(QPageSize::A4);

QPainter painter(&printer);
scene.render(&painter);

Si ` source ` est un rectangle nul, cette fonction utilisera ` sceneRect()` pour déterminer ce qu’il faut afficher. Si ` target ` est un rectangle nul, les dimensions du périphérique de dessin de ` painter` 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 QGraphicsView::render().

[signal] void QGraphicsScene::sceneRectChanged(const QRectF &rect)

Ce signal est émis par ` QGraphicsScene ` chaque fois que le rectangle de la scène change. Le paramètre ` rect ` correspond au nouveau rectangle de la scène.

Voir également QGraphicsView::updateSceneRect().

QList<QGraphicsItem *> QGraphicsScene::selectedItems() const

Renvoie une liste de tous les éléments actuellement sélectionnés. Les éléments sont renvoyés sans ordre particulier.

Voir également setSelectionArea().

QPainterPath QGraphicsScene::selectionArea() const

Renvoie la zone de sélection précédemment définie à l'aide de la fonction setSelectionArea(), ou un objet QPainterPath vide si aucune zone de sélection n'a été définie.

Voir également la fonction setSelectionArea().

[signal] void QGraphicsScene::selectionChanged()

Ce signal est émis par ` QGraphicsScene ` chaque fois que la sélection change. Vous pouvez appeler ` selectedItems()` pour obtenir la nouvelle liste des éléments sélectionnés.

La sélection change dès qu’un élément est sélectionné ou désélectionné, qu’une zone de sélection est définie, effacée ou modifiée d’une quelconque manière, qu’un élément présélectionné est ajouté à la scène ou qu’un élément sélectionné est supprimé de la scène.

QGraphicsScene émet ce signal une seule fois pour les opérations de sélection groupée. Par exemple, si vous définissez une zone de sélection, sélectionnez ou désélectionnez un ` QGraphicsItemGroup`, ou si vous ajoutez ou supprimez de la scène un élément parent contenant plusieurs éléments sélectionnés, `selectionChanged()` n’est émis qu’une seule fois une fois l’opération terminée (au lieu d’une fois pour chaque élément).

Voir également setSelectionArea(), selectedItems() et QGraphicsItem::setSelected().

bool QGraphicsScene::sendEvent(QGraphicsItem *item, QEvent *event)

Envoie l'événement event à l'élément item en passant par les filtres d'événements éventuels.

L'événement n'est envoyé que si l'élément est activé.

Renvoie false si l'événement a été filtré ou si l'élément est désactivé. Sinon, renvoie la valeur renvoyée par le gestionnaire d'événements.

Voir également QGraphicsItem::sceneEvent() et QGraphicsItem::sceneEventFilter().

void QGraphicsScene::setActivePanel(QGraphicsItem *item)

Active « item », qui doit être un élément de cette scène. Vous pouvez également passer la valeur 0 pour « item » ; dans ce cas, « QGraphicsScene » désactivera tout panneau actuellement actif.

Si la scène est actuellement inactive, ` item ` reste inactif jusqu’à ce que la scène devienne active (ou, si ` item ` est égal à ` nullptr`, aucun élément ne sera activé).

Voir également activePanel(), isActive() et QGraphicsItem::isActive().

void QGraphicsScene::setActiveWindow(QGraphicsWidget *widget)

Active la fonction « widget », qui doit correspondre à un widget présent dans cette scène. Vous pouvez également passer la valeur 0 à « widget » ; dans ce cas, « QGraphicsScene » désactivera toute fenêtre actuellement active.

Voir également activeWindow() et QGraphicsWidget::isActiveWindow().

void QGraphicsScene::setFocus(Qt::FocusReason focusReason = Qt::OtherFocusReason)

Met la scène au premier plan en lui envoyant une commande « QFocusEvent », en indiquant « focusReason » comme motif. Si la scène retrouve le focus après l’avoir perdu alors qu’un élément était au premier plan, ce dernier élément recevra à nouveau le focus avec le motif « focusReason ».

Si la scène a déjà le focus, cette fonction ne fait rien.

Voir également hasFocus(), clearFocus() et setFocusItem().

void QGraphicsScene::setFocusItem(QGraphicsItem *item, Qt::FocusReason focusReason = Qt::OtherFocusReason)

Définit l'élément actif de la scène sur item, avec comme motif d'activation focusReason, après avoir retiré le focus de tout élément précédent qui aurait pu être actif.

Si item est nullptr, ou s’il n’accepte pas le focus (c’est-à-dire que l’indicateur QGraphicsItem::ItemIsFocusable n’est pas activé), ou s’il n’est pas visible ou n’est pas activé, cette fonction se contente de retirer le focus de tout élément précédemment sélectionné.

Si `item` n’est pas ` nullptr`, et que la scène n’a pas actuellement le focus (c’est-à-dire que ` hasFocus()` renvoie ` false`), cette fonction appellera automatiquement ` setFocus()`.

Voir également focusItem(), hasFocus() et setFocus().

void QGraphicsScene::setSelectionArea(const QPainterPath &path, const QTransform &deviceTransform)

Définit la zone de sélection sur path. Tous les éléments situés à l'intérieur de cette zone sont immédiatement sélectionnés, tandis que tous ceux situés à l'extérieur sont désélectionnés. Vous pouvez obtenir la liste de tous les éléments sélectionnés en appelant la fonction selectedItems().

deviceTransform est la transformation qui s'applique à la vue ; elle doit être fournie si la scène contient des éléments qui ignorent les transformations.

Pour qu’un élément soit sélectionné, il doit être marqué comme sélectionnable (QGraphicsItem::ItemIsSelectable).

Voir également clearSelection() et selectionArea().

void QGraphicsScene::setSelectionArea(const QPainterPath &path, Qt::ItemSelectionOperation selectionOperation = Qt::ReplaceSelection, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, const QTransform &deviceTransform = QTransform())

Définit la zone de sélection sur path en utilisant mode pour déterminer si des éléments sont inclus dans la zone de sélection.

deviceTransform est la transformation qui s'applique à la vue ; elle doit être fournie si la scène contient des éléments qui ignorent les transformations.

selectionOperation détermine ce qu’il faut faire avec les éléments actuellement sélectionnés.

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

Voir également clearSelection() et selectionArea().

void QGraphicsScene::setStyle(QStyle *style)

Définit ou remplace le style de la scène par « style » et réaffecte ce style à cette scène. Tout style précédemment attribué est supprimé. Le style par défaut de la scène est « QApplication::style() » et sert de style par défaut pour tous les éléments de type « QGraphicsWidget » présents dans la scène.

La modification du style, que ce soit directement en appelant cette fonction ou indirectement en appelant ` QApplication::setStyle()`, mettra automatiquement à jour le style de tous les widgets de la scène auxquels aucun style n’a été explicitement attribué.

Si style est égal à nullptr, QGraphicsScene reviendra à QApplication::style().

Voir également style().

QStyle *QGraphicsScene::style() const

Renvoie le style de la scène, ou la même valeur que QApplication::style() si aucun style n'a été explicitement attribué à la scène.

Voir également setStyle().

[slot] void QGraphicsScene::update(const QRectF &rect = QRectF())

Planifie un rafraîchissement de la zone rect sur la scène.

Remarque : ce slot est surchargé. Pour vous connecter à ce slot :

// Connect using qOverload:
connect(sender, &SenderClass::signal,
        graphicsScene, qOverload(&QGraphicsScene::update));

// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
        graphicsScene, [receiver = graphicsScene](const QRectF &rect) { receiver->update(rect); });
Pour plus d'exemples et d'approches, voir la section « Connexion à des slots surchargés ».

Voir également ` sceneRect()` et ` changed()`.

void QGraphicsScene::update(qreal x, qreal y, qreal w, qreal h)

Cette fonction équivaut à appeler `update(QRectF(x, y, w, h));`

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

QList<QGraphicsView *> QGraphicsScene::views() const

Renvoie une liste de toutes les vues qui affichent cette scène.

Voir aussi QGraphicsView::scene().

[virtual protected] void QGraphicsScene::wheelEvent(QGraphicsSceneWheelEvent *wheelEvent)

Ce gestionnaire d'événement, destiné à l'événement « wheelEvent », peut être réimplémenté dans une sous-classe afin de recevoir les événements liés à la molette de la souris pour la scène.

Par défaut, l’événement est transmis à l’élément visible situé le plus en haut sous le curseur. S’il est ignoré, l’événement se propage à l’élément situé en dessous, et ainsi de suite jusqu’à ce que l’événement soit accepté ou qu’il atteigne la scène. Si aucun élément n’accepte l’événement, celui-ci est ignoré.

Remarque : voir items() pour savoir quels éléments sont considérés comme visibles par cette fonction.

Voir également QGraphicsItem::wheelEvent().

qreal QGraphicsScene::width() const

Cette fonction pratique équivaut à appeler ` sceneRect()`.width().

Voir également height().

© 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.