Sur cette page

QGraphicsScene Class

La classe QGraphicsScene fournit une surface pour gérer un grand nombre d'éléments graphiques 2D. Plus d'informations...

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

Emplacements protégés

virtual bool focusNextPrevChild(bool next)

Description détaillée

Cette classe sert de conteneur pour QGraphicsItems. Elle est utilisée avec QGraphicsView pour visualiser 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 cadre de visualisation graphique.

QGraphicsScene fournit également des fonctionnalités qui vous permettent de déterminer efficacement l'emplacement des éléments et de déterminer quels éléments sont visibles dans une zone arbitraire de la scène. Avec le widget QGraphicsView, vous pouvez visualiser l'ensemble de la scène ou effectuer un zoom avant et ne visualiser 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 ne fait que 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, vous commencez par construire un objet QGraphicsScene. Ensuite, vous avez deux options : soit vous ajoutez vos objets QGraphicsItem existants en appelant addItem(), soit vous appelez l'une des fonctions de commodité addEllipse(), addLine(), addPath(), addPixmap(), addPolygon(), addRect() ou addText(), qui renvoient toutes un pointeur sur 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é, un algorithme adapté aux grandes scènes 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, voir la propriété itemIndexMethod.

Le rectangle de délimitation de la scène est défini en appelant setSceneRect(). Les éléments peuvent être placés à n'importe quel endroit de 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é que pour la comptabilité interne, en maintenant l'index des éléments de la scène. Si le rect de la scène n'est pas défini, QGraphicsScene utilisera la zone de délimitation de tous les éléments, telle qu'elle est renvoyée par itemsBoundingRect(), comme rect de la scène. Cependant, itemsBoundingRect() est une fonction relativement longue, car elle collecte des informations sur la position de chaque élément de la scène. C'est pourquoi vous devez toujours définir le rect de la scène lorsque vous travaillez sur des scènes de grande taille.

L'une des plus grandes forces de QGraphicsScene est sa capacité à déterminer efficacement l'emplacement des éléments. Même avec des millions d'éléments sur la scène, les fonctions items() peuvent déterminer l'emplacement d'un élément en quelques millisecondes. Il existe plusieurs surcharges de items() : l'une d'entre elles permet de trouver des éléments à une certaine position, l'autre de trouver des éléments à l'intérieur d'un polygone ou d'un rectangle ou les recoupant, et bien d'autres encore. La liste des éléments renvoyés est triée par ordre d'empilement, l'élément le plus haut étant le premier de la liste. Pour plus de commodité, il existe également une fonction itemAt() qui renvoie l'élément le plus élevé à une position donnée.

QGraphicsScene conserve les informations de sélection pour la scène. Pour sélectionner des éléments, appelez setSelectionArea(), et 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 est de propager les événements provenant de QGraphicsView. Pour envoyer un événement à une scène, vous construisez un événement qui hérite de QEvent, puis vous l'envoyez en utilisant, par exemple, QCoreApplication::sendEvent(). event() est responsable de l'envoi de l'événement aux différents éléments. Certains événements courants sont gérés par des gestionnaires d'événements de commodité. Par exemple, les événements liés à l'appui sur une touche sont gérés par keyPressEvent() et les événements liés à l'appui sur la souris sont gérés par mousePressEvent().

Les événements liés aux touches sont transmis à l'élément central. Pour définir l'élément de focalisation, vous pouvez soit appeler setFocusItem(), en passant un élément qui accepte la focalisation, soit l'élément lui-même peut appeler QGraphicsItem::setFocus(). Appelez focusItem() pour obtenir l'élément de focalisation actuel. Pour des raisons de compatibilité avec les widgets, la scène conserve également ses propres informations sur le focus. Par défaut, la scène n'a pas de focus et tous les événements clés sont ignorés. Si setFocus() est appelé, 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, hasFocus() renverra true, et les événements clés seront transmis à l'élément du focus, s'il y en a un. 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 sur le focus de l'élément et, une fois que la scène aura retrouvé le focus, elle s'assurera que le dernier élément sur lequel le focus a été mis a retrouvé le focus.

Pour les effets de survol, QGraphicsScene distribue les é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. Au fur et à mesure que la souris se déplace dans la zone de l'élément, QGraphicsScene lui envoie des événements GraphicsSceneHoverMove. Lorsque la souris quitte la zone de l'élément, celui-ci reçoit un événement GraphicsSceneHoverLeave.

Tous les événements liés à la souris sont transmis à l'élément actuel de la souris. Un élément devient le capteur de souris de la scène s'il accepte les événements liés à la souris (voir QGraphicsItem::acceptedMouseButtons()) et s'il reçoit une pression de la souris. Il reste le capteur de souris jusqu'à ce qu'il reçoive un relâchement de la souris et qu'aucun autre bouton de la souris ne soit enfoncé. Vous pouvez appeler mouseGrabberItem() pour déterminer quel élément est actuellement en train d'attraper la souris.

Voir également QGraphicsItem et QGraphicsView.

Documentation sur les types de membres

enum QGraphicsScene::ItemIndexMethod

Cette énumération décrit les algorithmes d'indexation proposés par QGraphicsScene pour gérer les informations relatives à la position des éléments de la scène.

ConstanteValeurDescription
QGraphicsScene::BspTreeIndex0Un arbre de partitionnement de l'espace binaire est appliqué. Tous les algorithmes de localisation d'éléments de QGraphicsScene sont d'un ordre de complexité proche du logarithme, grâce à l'utilisation de la recherche binaire. L'ajout, le déplacement et la suppression d'éléments sont logarithmiques. Cette approche est optimale pour les scènes statiques (c'est-à-dire les scènes où la plupart des éléments ne bougent pas).
QGraphicsScene::NoIndex-1Aucun index n'est appliqué. La localisation des éléments est d'une complexité linéaire, car tous les éléments de la scène sont recherchés. 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 permanence.

Voir également setItemIndexMethod() et bspTreeDepth.

enum QGraphicsScene::SceneLayer
flags QGraphicsScene::SceneLayers

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

Chaque couche représente un drapeau qui peut être assemblé par OU lors de l'appel de fonctions telles que invalidate() ou QGraphicsView::invalidateScene().

ConstanteValeurDescription
QGraphicsScene::ItemLayer0x1Le calque des éléments. QGraphicsScene affiche tous les éléments de ce calque en appelant la fonction virtuelle drawItems(). La couche d'éléments est dessinée après la couche d'arrière-plan, mais avant la couche d'avant-plan.
QGraphicsScene::BackgroundLayer0x2Le calque d'arrière-plan. QGraphicsScene rend 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 de tous les calques.
QGraphicsScene::ForegroundLayer0x4Le calque de premier plan. QGraphicsScene rend le premier plan de la scène dans ce calque en appelant la fonction virtuelle drawForeground(). La couche d'avant-plan est dessinée en dernier de toutes les couches.
QGraphicsScene::AllLayers0xffffTous les calques ; cette valeur représente une combinaison des trois calques.

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

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

Documentation sur les propriétés

backgroundBrush : QBrush

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

Définissez cette propriété pour changer l'arrière-plan de la scène en une couleur, un dégradé ou une texture différente. La brosse 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 drawBackground() pour dessiner l'arrière-plan de la scène. Pour un contrôle plus détaillé de la manière dont l'arrière-plan est dessiné, vous pouvez réimplémenter 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'indexation BSP de QGraphicsScene

Cette propriété n'a aucun effet lorsque NoIndex est utilisé.

Cette valeur détermine la profondeur de l'arbre BSP de QGraphicsScene. La profondeur affecte directement les performances de QGraphicsScene et 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 localité des éléments, même pour des scènes comportant des milliers ou des millions d'éléments. Cela permet également d'améliorer considérablement les performances de rendu.

Par défaut, la valeur est 0, auquel cas Qt devinera une profondeur par défaut raisonnable en fonction de la taille, de la localisation et du nombre d'éléments dans la scène. Cependant, si ces paramètres changent fréquemment, vous risquez de subir des ralentissements car QGraphicsScene réajuste la profondeur en interne. Vous pouvez éviter ces ralentissements en fixant la profondeur de l'arbre en définissant cette propriété.

La profondeur de l'arbre et la taille du rectangle de 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 a 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 aussi itemIndexMethod.

focusOnTouch : bool

Cette propriété indique si les éléments gagnent le focus lorsqu'ils reçoivent un événement "touch begin".

Le comportement habituel est de ne transférer le focus que lorsqu'un élément est cliqué. Souvent, le système d'exploitation interprète un tapotement sur un pavé tactile comme l'équivalent d'un clic de souris, ce qui génère un événement de clic synthétisé en réponse. Toutefois, il est possible de configurer ce comportement, du moins sous macOS.

Par défaut, QGraphicsScene transfère également le focus lorsque vous touchez un trackpad ou similaire. Si le système d'exploitation est configuré pour ne pas générer de clic de souris synthétique lorsque vous touchez le pavé tactile, cela est surprenant. Si le système d'exploitation génère des clics de souris synthétiques en tapant sur le trackpad, le transfert de 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 sur macOS.

La valeur par défaut est true, ce qui garantit un comportement par défaut identique à celui des versions de Qt antérieures à la 5.12. La valeur false empêche 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é contient la police par défaut de la scène

Cette propriété fournit la police de caractères de la scène. La police de la scène est par défaut et résout toutes ses entrées à partir de QApplication::font.

Si la police de la scène change, soit directement par setFont(), soit indirectement lorsque la police de l'application change, QGraphicsScene s'envoie d'abord un événement FontChange, puis envoie des événements FontChange à tous les éléments widgets de premier niveau de la scène. Ces éléments réagissent en résolvant leurs propres polices dans la scène, puis ils informent leurs enfants, qui informent à leur tour leurs enfants, et ainsi de suite, jusqu'à ce que tous les éléments widgets aient mis à jour leurs polices.

La modification de la police de la scène (directement ou indirectement par l'intermédiaire de QApplication::setFont()) entraîne automatiquement le redessin de toute 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 la brosse d'avant-plan de la scène.

Modifiez cette propriété pour changer la couleur, le dégradé ou la texture de l'avant-plan de la scène.

L'avant-plan est dessiné après (sur) les éléments. La brosse d'avant-plan par défaut est Qt::NoBrush (c'est-à-dire que l'avant-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 drawForeground() pour dessiner l'avant-plan de la scène. Pour un contrôle plus détaillé de la manière dont l'avant-plan est dessiné, vous pouvez réimplémenter la fonction drawForeground() dans une sous-classe QGraphicsScene.

Fonctions d'accès :

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

itemIndexMethod : ItemIndexMethod

Cette propriété contient la méthode d'indexation de l'élément.

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

Dans la plupart des cas, la méthode d'indexation par défaut BspTreeIndex fonctionne bien. Si votre scène comporte de nombreuses animations et que vous constatez des lenteurs, 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é indique la taille minimale qu'un élément doit avoir, après transformation de la vue, pour être dessiné

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 rendu. Si un élément n'est pas rendu et qu'il clippe ses éléments enfants, ces derniers ne seront pas non plus rendus. Cette valeur permet d'accélérer le rendu des scènes comportant de nombreux objets rendus sur une vue zoomée.

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

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

Remarque : les éléments qui ne sont pas dessinés parce qu'ils sont trop petits sont toujours 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 fixer la valeur de minimumRenderSize() à une valeur inférieure ou égale à 1 afin d'éviter que de grands éléments non rendus ne soient 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 par défaut et résout toutes ses entrées à partir de QApplication::palette.

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 éléments de widget de niveau supérieur de la scène. Ces éléments réagissent en résolvant leurs propres palettes dans la scène, puis ils informent leurs enfants, qui informent à leur tour leurs enfants, et ainsi de suite, jusqu'à ce que tous les éléments widgets aient mis à jour leurs palettes.

La modification de la palette de la scène (directement ou indirectement par l'intermédiaire de QApplication::setPalette()) entraîne automatiquement un redessin 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, c'est-à-dire le rectangle de délimitation de la scène

Le rectangle de la scène définit l'étendue de la scène. 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.

S'il n'est pas défini, ou s'il est défini à une valeur nulle QRectF, sceneRect() renvoie le plus grand rectangle de délimitation de tous les éléments de la scène depuis la création de celle-ci (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é indique si le fait de cliquer sur l'arrière-plan de la scène efface le focus

Dans un site QGraphicsScene où stickyFocus a la valeur true, le focus reste inchangé lorsque l'utilisateur clique dans 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 supprimé.

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

Le focus change en réponse à une pression de la souris. Vous pouvez réimplémenter mousePressEvent() dans une sous-classe de QGraphicsScene pour faire basculer 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 sur les fonctions membres

QGraphicsScene::QGraphicsScene(QObject *parent = nullptr)

Construit un objet QGraphicsScene. Le paramètre parent est transmis au constructeur de QObject.

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

Construit un objet QGraphicsScene, en utilisant sceneRect pour son rectangle de scène. Le paramètre parent est transmis au constructeur de QObject.

Voir aussi sceneRect.

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

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

Voir aussi sceneRect.

[virtual noexcept] QGraphicsScene::~QGraphicsScene()

Retire et supprime tous les éléments de l'objet de scène avant de détruire l'objet de scène. L'objet scène est supprimé de la liste globale des scènes de l'application et de toutes les vues associées.

QGraphicsItem *QGraphicsScene::activePanel() const

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

Voir aussi QGraphicsScene::setActivePanel().

QGraphicsWidget *QGraphicsScene::activeWindow() const

Renvoie la fenêtre active actuelle, 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, et renvoie le pointeur de l'élément. La géométrie de l'ellipse est définie par rect, et son stylo et son pinceau sont initialisés à 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() une fois 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 de commodité équivaut à appeler addEllipse(QRectF(x, y, w, h), pen, brush).

void QGraphicsScene::addItem(QGraphicsItem *item)

Ajoute ou déplace le site item et tous ses enfants dans cette scène. Cette scène devient propriétaire de item.

Si l'élément est visible (c'est-à-dire que QGraphicsItem::isVisible() retourne vrai), QGraphicsScene émettra changed() une fois que le contrôle reviendra à la boucle d'événements.

Si l'élément se trouve déjà dans une scène différente, il sera d'abord supprimé de son ancienne scène, puis ajouté à cette scène en tant que niveau supérieur.

QGraphicsScene enverra des notifications ItemSceneChange à item pendant qu'il est ajouté à la scène. Si l'élément n'appartient pas encore à une scène, une seule notification est envoyée. S'il appartient déjà à une scène (c'est-à-dire qu'il est déplacé vers cette scène), QGraphicsScene enverra une notification d'ajout 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, 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, et renvoie le pointeur de l'é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 d'é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() une fois 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 de commodité équivaut à 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 chemin à la scène, et renvoie le pointeur de l'élément. La géométrie du chemin est définie par path, et son stylo et son pinceau sont initialisés à 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() une fois 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, et renvoie le pointeur de l'élément. La pixmap est définie 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 que QGraphicsItem::isVisible() renvoie true), QGraphicsScene émettra changed() une fois 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 polygone à la scène, et renvoie le pointeur de l'élément. Le polygone est défini par polygon, et son stylo et son pinceau sont initialisés à 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() une fois 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 rectangle à la scène, et renvoie le pointeur de l'élément. La géométrie du rectangle est définie par rect, et son stylo et son pinceau sont initialisés à 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 élément QRect(50, 50, 100, 100) est ajouté, son coin supérieur gauche sera situé à (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 que QGraphicsItem::isVisible() renvoie true), QGraphicsScene émettra changed() une fois 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 de commodité é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 QGraphicsSimpleTextItem à la scène, et renvoie le pointeur de l'é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 QGraphicsItem::isVisible() renvoie true), QGraphicsScene émettra changed() une fois que le contrôle reviendra à la boucle d'événements.

Voir aussi 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, et renvoie le pointeur de l'é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 QGraphicsItem::isVisible() renvoie true), QGraphicsScene émettra changed() une fois que le contrôle reviendra à la boucle d'événements.

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

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

Crée un nouveau QGraphicsProxyWidget pour widget, l'ajoute à la scène et renvoie un pointeur vers le proxy. wFlags définit les drapeaux 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 que QGraphicsItem::isVisible() renvoie true), QGraphicsScene émettra changed() une fois que le contrôle reviendra à la boucle d'événements.

Notez que les widgets dont l'attribut Qt::WA_PaintOnScreen widget est défini et les widgets qui enveloppent une application ou un contrôleur externe ne sont pas pris en charge. Les exemples sont QOpenGLWidget et QAxWidget.

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

[slot] void QGraphicsScene::advance()

Ce slot fait avancer la scène d'un pas, en appelant QGraphicsItem::advance() pour tous les éléments de la scène. Cela se fait en deux phases : dans la première phase, tous les éléments sont informés que la scène est sur le point de changer, et dans la seconde phase, tous les éléments sont informés qu'ils peuvent se déplacer. Dans la première phase, QGraphicsItem::advance() est appelé en passant une valeur de 0 comme argument, et 1 est passé dans la seconde phase.

Notez que vous pouvez également utiliser le cadre 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énement, 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 aussi QGraphicsView::updateScene().

[slot] void QGraphicsScene::clear()

Retire et supprime tous les éléments de la scène, mais laisse l'état de la scène inchangé.

Voir aussi addItem().

void QGraphicsScene::clearFocus()

Supprime le focus de la scène. Si un élément a le focus au moment de l'appel de cette fonction, il le perdra et le regagnera une fois que la scène aura retrouvé le focus.

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

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

[slot] void QGraphicsScene::clearSelection()

Efface la sélection actuelle.

Voir aussi 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éterminée par mode. Par défaut, tous les éléments dont la forme intersecte item ou est contenue dans la forme de item sont renvoyés.

Les éléments sont renvoyés dans l'ordre d'empilement décroissant (c'est-à-dire que le premier élément de la liste est l'élément le plus haut et le dernier élément est l'élément le plus bas).

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

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

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

Remarque : voir items() pour une définition des éléments 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 dans un nouveau QGraphicsItemGroup, et renvoie un pointeur sur le groupe. Le groupe est créé avec l'ancêtre commun de items comme parent, et avec la position (0, 0). Les éléments sont tous référencés dans le groupe, et leurs positions et leurs transformations sont liées au groupe. Si items est vide, cette fonction renverra un niveau supérieur vide QGraphicsItemGroup.

QGraphicsScene La propriété de l'élément de groupe appartient à l'utilisateur ; il n'est pas nécessaire 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 retire group de la scène et enfin le supprime. Les positions et les transformations des éléments sont transférées du groupe au parent du groupe.

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

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

Ce gestionnaire d'événement, pour l'événement event, peut être réimplémenté dans une sous-classe pour recevoir les événements d'entrée par glissement pour la scène.

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

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

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

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

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

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

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

Remarque : voir items() pour une définition des éléments 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.

Toutes les peintures sont réalisées dans les coordonnées de la scène. Le paramètre rect est le 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, après que l'arrière-plan et tous les éléments ont été dessinés. Réimplémentez cette fonction pour obtenir un premier plan personnalisé pour la scène.

Toutes les peintures sont réalisées dans les coordonnées de la scène. Le paramètre rect est le rectangle exposé.

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

Voir également drawBackground() et drawItems().

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

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

Voir aussi 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 distribue aux gestionnaires d'événements respectifs.

En plus d'appeler les 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'il n'y a pas d'élément de saisie de la souris. Les événements de survol sont transmis directement aux éléments ; il n'y a pas de fonction de commodité pour eux.

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 aussi 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, pour l'événement focusEvent, peut être réimplémenté dans une sous-classe pour recevoir le focus dans les événements.

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

Voir aussi QGraphicsItem::focusOutEvent().

QGraphicsItem *QGraphicsScene::focusItem() const

Lorsque la scène est active, cette fonction renvoie l'élément de focalisation actuel de la scène, ou nullptr si aucun élément n'est actuellement focalisé. Lorsque la scène est inactive, cette fonction renvoie l'élément qui obtiendra le focus d'entrée lorsque la scène sera active.

L'élément au centre de l'attention reçoit une entrée 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 lorsque le focus change dans la scène (c'est-à-dire lorsqu'un élément gagne ou perd le focus d'entrée, 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 gagnent le focus d'entrée. Il est particulièrement utile pour la mise en œuvre de claviers virtuels, de méthodes de saisie et d'éléments de curseur.

oldFocusItem est un pointeur sur l'élément qui avait précédemment le focus, ou 0 si aucun élément n'avait le focus avant l'émission du signal. newFocusItem est un pointeur sur l'élément qui a gagné le focus d'entrée, 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 d'entrée avait le focus, oldFocusItem pointera sur l'élément du champ d'entrée, newFocusItem sera nullptr, et reason sera Qt::ActiveWindowFocusReason.

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

Recherche un nouveau widget auquel donner le focus clavier, comme approprié pour Tab et Shift+Tab, et renvoie true s'il trouve un nouveau widget, ou false s'il ne le trouve pas. 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 finement la manière dont le focus des onglets passe dans votre scène. L'implémentation par défaut est basée sur la chaîne de focus des onglets définie par QGraphicsWidget::setTabOrder().

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

Ce gestionnaire d'événement, pour l'événement focusEvent, peut être réimplémenté dans une sous-classe pour recevoir les événements de retrait du focus.

L'implémentation par défaut supprime le focus de n'importe quel élément du focus, puis supprime le focus de la scène.

Voir aussi 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 clés de QKeyEvent à tout élément qui a le focus.

Voir aussi setFocus() et setFocusItem().

qreal QGraphicsScene::height() const

Cette fonction de commodité équivaut à appeler sceneRect().height().

Voir aussi width().

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

Ce gestionnaire d'événement, pour l'événement helpEvent, peut être réimplémenté dans une sous-classe pour recevoir des événements d'aide. Les événements sont de type QEvent::ToolTip et sont créés lorsqu'une infobulle est demandée.

L'implémentation par défaut affiche l'infobulle de l'élément visible le plus haut, c'est-à-dire l'élément ayant la valeur z la plus élevée, à la position du curseur de la souris. Si aucun élément n'a de bulle d'aide, cette fonction ne fait rien.

Remarque : voir items() pour une définition des éléments 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énement, pour l'événement event, peut être réimplémenté dans une sous-classe pour recevoir les événements de la méthode d'entrée pour la scène.

L'implémentation par défaut transmet l'événement à focusItem(). Si aucun élément n'est actuellement au centre de l'attention ou si l'élément au centre de l'attention 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 d'entrée pour interroger un ensemble de propriétés de la scène afin de pouvoir prendre en charge des opérations complexes de la méthode d'entrée telles que la prise en charge du texte environnant et des reconversions.

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

Voir aussi QWidget::inputMethodQuery().

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

Invalide et planifie un nouveau dessin de layers dans rect sur la scène. Tout contenu mis en cache dans layers est inconditionnellement invalidé et redessiné.

Vous pouvez utiliser cette surcharge de fonction pour informer QGraphicsScene des modifications apportées à l'arrière-plan ou à l'avant-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 notifier les changements 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 que 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.

Note : Ce slot est surchargé. Pour se 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 connecting to overloaded slots (connexion à des slots surchargés).

Voir aussi 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 (c'est-à-dire qu'elle est vue par au moins un QGraphicsView qui est actif) ; sinon, renvoie false.

Voir aussi QGraphicsItem::isActive() et QWidget::isActiveWindow().

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

Renvoie l'élément visible le plus haut à la position spécifiée position, ou nullptr s'il n'y a pas d'élément à cette position.

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.

Remarque : voir items() pour une définition des éléments 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 haut à la position spécifiée par (x, y), ou nullptr s'il n'y a pas d'élément à cette position.

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.

Cette fonction de commodité équivaut à appeler itemAt(QPointF(x, y), deviceTransform).

Remarque : voir items() pour une définition des éléments 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 de la scène. order décide de l'ordre d'empilement.

Voir aussi 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, en fonction de mode, se trouvent à l'adresse pos spécifiée dans une liste triée à l'aide de order. Dans ce cas, "visible" définit les éléments pour lesquels : isVisible() renvoie true, effectiveOpacity() renvoie une valeur supérieure à 0,0 (ce qui est totalement transparent) et l'élément parent ne l'écrête pas.

La valeur par défaut de mode est Qt::IntersectsItemShape; tous les éléments dont la forme exacte croise pos 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.

Voir aussi 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, en fonction de mode, se trouvent à l'intérieur ou à l'intersection de l'élément spécifié path, dans une liste triée à l'aide de order. Dans ce cas, "visible" définit les éléments pour lesquels : isVisible() renvoie true, effectiveOpacity() renvoie une valeur supérieure à 0,0 (ce qui est totalement transparent) et l'élément parent ne l'écrête pas.

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

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 aussi 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, en fonction de mode, se trouvent à l'intérieur ou à l'intersection de l'élément spécifié polygon, dans une liste triée à l'aide de order. Dans ce cas, "visible" définit les éléments pour lesquels : isVisible() renvoie true, effectiveOpacity() renvoie une valeur supérieure à 0,0 (ce qui est totalement transparent) et l'élément parent ne l'écrête 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 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 aussi 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, en fonction de mode, se trouvent à l'intérieur ou à l'intersection de l'élément spécifié rect, dans une liste triée à l'aide de order. Dans ce cas, "visible" définit les éléments pour lesquels : isVisible() renvoie true, effectiveOpacity() renvoie une valeur supérieure à 0,0 (ce qui est totalement transparent) et l'élément parent ne l'écrête pas.

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

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 aussi 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, en fonction de mode, se trouvent à l'intérieur du rectangle défini par x, y, w et h ou l'intersectent, dans une liste triée à l'aide de order. Dans ce cas, "visible" définit les éléments pour lesquels : isVisible() renvoie true, effectiveOpacity() renvoie une valeur supérieure à 0,0 (ce qui est totalement transparent) et l'élément parent ne l'écrête pas.

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.

QRectF QGraphicsScene::itemsBoundingRect() const

Calcule et renvoie le rectangle de délimitation de tous les éléments de la scène. Cette fonction fonctionne en itérant sur tous les éléments, ce qui peut la rendre lente pour les scènes de grande taille.

Voir également sceneRect().

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

Ce gestionnaire d'événement, pour l'événement keyEvent, peut être réimplémenté dans une sous-classe pour recevoir les événements de pression de touche. L'implémentation par défaut transmet l'événement à l'élément de focalisation actuel.

Voir aussi QGraphicsItem::keyPressEvent() et focusItem().

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

Ce gestionnaire d'événement, pour l'événement keyEvent, peut être réimplémenté dans une sous-classe pour recevoir les événements de relâchement des touches. L'implémentation par défaut transmet l'événement à l'élément de focalisation actuel.

Voir aussi QGraphicsItem::keyReleaseEvent() et focusItem().

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

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

Si quelqu'un double-clique sur la scène, celle-ci recevra d'abord un événement de pression de la 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 concerne un élément différent de celui qui a reçu la première pression et le premier relâchement, il sera transmis en tant qu'événement de pression. Toutefois, les événements de triple clic ne sont pas transmis comme des événements de double clic dans ce cas.

L'implémentation par défaut est similaire à mousePressEvent().

Remarque : voir items() pour une définition des éléments 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 actuel de capture de la souris, ou nullptr si aucun élément n'est actuellement en train de capturer la souris. L'élément de capture de la souris est l'élément qui reçoit tous les événements de souris envoyés à la scène.

Un élément devient un capteur de souris lorsqu'il reçoit et accepte un événement de pression de la souris, et il reste le capteur de souris 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 son statut de capteur de souris.
  • Si l'élément devient invisible (quelqu'un appelle item->setVisible(false)) ou s'il est désactivé (quelqu'un appelle item->setEnabled(false)), il perd le contrôle de la souris.
  • Si l'élément est retiré de la scène, il perd la prise de la souris.

Si l'élément perd sa prise de souris, la scène ignore tous les événements liés à la souris jusqu'à ce qu'un nouvel élément prenne la souris (c'est-à-dire jusqu'à ce qu'un nouvel élément reçoive un événement d'appui sur la souris).

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

Ce gestionnaire d'événement, pour l'événement mouseEvent, peut être réimplémenté dans une sous-classe pour 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 de la souris. S'il y a un élément de saisie de la souris, l'événement est envoyé à la saisie de la souris. S'il existe des éléments qui acceptent les événements de survol à la position actuelle, l'événement est traduit en événement de survol et accepté ; sinon, il est ignoré.

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

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

Ce gestionnaire d'événement, pour l'événement mouseEvent, peut être réimplémenté dans une sous-classe pour recevoir les événements de pression de la 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 de saisie de la souris, l'événement est envoyé à la saisie de la souris. Sinon, il est transmis à l'élément visible le plus haut qui accepte les événements de souris à la position de scène de l'événement, et cet élément devient rapidement l'élément d'accroche de la souris.

S'il n'y a pas d'élément à la position donnée sur la scène, la zone de sélection est réinitialisée, tout élément focalisé perd sa focalisation d'entrée et l'événement est alors ignoré.

Remarque : voir items() pour une définition des éléments 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, pour l'événement mouseEvent, peut être réimplémenté dans une sous-classe pour 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 de la souris. S'il n'y a pas de souris, l'événement est ignoré. Dans le cas contraire, l'événement est envoyé à la souris. Si ce relâchement de la souris représente le dernier bouton enfoncé sur la souris, l'élément "mouse grabber" perd alors la prise de la souris.

Voir aussi 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 transmise à l'appelant (c'est-à-dire que QGraphicsScene ne supprimera plus item lorsqu'il sera détruit).

Voir aussi addItem().

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

Rend le rect 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 peinture, tel que QImage (par exemple, pour faire une capture d'écran), ou pour l'imprimer avec QPrinter. Par exemple :

QGraphicsScene scene;
scene.addItem(...
...
QPrinter printer(QPrinter::HighResolution);
printer.setPaperSize(QPrinter::A4);

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

Si source est un rectangle nul, cette fonction utilisera sceneRect() pour déterminer ce qu'il faut rendre. Si target est un rectangle nul, les dimensions du périphérique de peinture de painter seront utilisées.

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

Voir également QGraphicsView::render().

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

Ce signal est émis par QGraphicsScene lorsque le rectangle de la scène change. Le paramètre rect est le nouveau rectangle de scène.

Voir aussi 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 aussi setSelectionArea().

QPainterPath QGraphicsScene::selectionArea() const

Renvoie la zone de sélection qui a été définie précédemment avec setSelectionArea(), ou un QPainterPath vide si aucune zone de sélection n'a été définie.

Voir aussi setSelectionArea().

[signal] void QGraphicsScene::selectionChanged()

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

La sélection change chaque fois 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, 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 de groupe. Par exemple, si vous définissez une zone de sélection, sélectionnez ou désélectionnez un élément 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 après la fin de l'opération (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 à travers les filtres d'événements possibles.

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énement.

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 0 pour item, auquel 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 nullptr, aucun élément ne sera activé).

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

void QGraphicsScene::setActiveWindow(QGraphicsWidget *widget)

Active widget, qui doit être un widget dans cette scène. Vous pouvez également passer 0 pour widget, auquel cas QGraphicsScene désactivera toute fenêtre actuellement active.

Voir aussi activeWindow() et QGraphicsWidget::isActiveWindow().

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

Fixe le focus sur la scène en envoyant un QFocusEvent à la scène, en passant focusReason comme raison. Si la scène regagne le focus après l'avoir perdu pendant qu'un élément avait le focus, le dernier élément ayant eu le focus recevra le focus avec focusReason comme raison.

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

Voir aussi hasFocus(), clearFocus() et setFocusItem().

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

Définit l'élément de focus de la scène à item, avec le motif de focus focusReason, après avoir retiré le focus de tout élément précédent qui aurait pu avoir le focus.

Si item est nullptr, ou s'il n'accepte pas le focus (c'est-à-dire qu'il n'a pas le drapeau QGraphicsItem::ItemIsFocusable activé), ou s'il n'est pas visible ou pas activé, cette fonction supprime uniquement le focus de tout élément précédent qui avait le focus.

Si l'élément 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 à path. Tous les éléments situés à l'intérieur de cette zone sont immédiatement sélectionnés et tous les éléments situés à l'extérieur ne sont pas sélectionnés. Vous pouvez obtenir la liste de tous les éléments sélectionnés en appelant selectedItems().

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.

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 à path en utilisant mode pour déterminer si les éléments sont inclus dans la zone de sélection.

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.

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 aussi clearSelection() et selectionArea().

void QGraphicsScene::setStyle(QStyle *style)

Définit ou remplace le style de la scène à style, et reporte le style sur cette scène. Tout style précédemment attribué est supprimé. Le style de la scène est par défaut QApplication::style() et sert de valeur par défaut pour tous les éléments QGraphicsWidget de la scène.

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

Si style est nullptr, QGraphicsScene deviendra QApplication::style().

Voir aussi style().

QStyle *QGraphicsScene::style() const

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

Voir aussi setStyle().

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

Planifie un redessin de la zone rect sur la scène.

Note : Ce slot est surchargé. Pour se 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 connecting to overloaded slots (connexion à des slots surchargés).

Voir aussi 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, pour l'événement wheelEvent, peut être réimplémenté dans une sous-classe pour recevoir les événements de la roue de la souris pour la scène.

Par défaut, l'événement est transmis à l'élément visible le plus haut sous le curseur. S'il est ignoré, l'événement se propage à l'élément du 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 une définition des éléments considérés comme visibles par cette fonction.

Voir également QGraphicsItem::wheelEvent().

qreal QGraphicsScene::width() const

Cette fonction de commodité équivaut à appeler sceneRect().width().

Voir aussi 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.