Sur cette page

QGraphicsItem Class

La classe QGraphicsItem est la classe de base pour tous les éléments graphiques d'un site QGraphicsScene. Plus....

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

QAbstractGraphicsShapeItem, QGraphicsItemGroup, QGraphicsLineItem, QGraphicsObject, et QGraphicsPixmapItem

Types publics

enum CacheMode { NoCache, ItemCoordinateCache, DeviceCoordinateCache }
enum GraphicsItemChange { ItemEnabledChange, ItemEnabledHasChanged, ItemPositionChange, ItemPositionHasChanged, ItemTransformChange, …, ItemScenePositionHasChanged }
enum GraphicsItemFlag { ItemIsMovable, ItemIsSelectable, ItemIsFocusable, ItemClipsToShape, ItemClipsChildrenToShape, …, ItemContainsChildrenInShape }
flags GraphicsItemFlags
enum PanelModality { NonModal, PanelModal, SceneModal }
enum { Type, UserType }

Fonctions publiques

QGraphicsItem(QGraphicsItem *parent = nullptr)
virtuel ~QGraphicsItem()
bool acceptDrops() const
bool acceptHoverEvents() const
bool acceptTouchEvents() const
Qt::MouseButtons acceptedMouseButtons() const
virtual void advance(int phase)
QRectF virtuel boundingRect() const = 0
QRegion boundingRegion(const QTransform &itemToDeviceTransform) const
qreal boundingRegionGranularity() const
QGraphicsItem::CacheMode cacheMode() const
QList<QGraphicsItem *> childItems() const
QRectF childrenBoundingRect() const
void clearFocus()
QPainterPath clipPath() const
virtuel bool collidesWithItem(const QGraphicsItem *autre, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
bool virtuel collidesWithPath(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
QList<QGraphicsItem *> (Qt::ItemSelectionMode) collidingItems(Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
QGraphicsItem *commonAncestorItem(const QGraphicsItem *autre) const
virtuel bool contains(const QPointF &point) const
QCursor cursor() const
QVariant data(int clé) const
QTransform deviceTransform(const QTransform &viewportTransform) const
qreal effectiveOpacity() const
void ensureVisible(const QRectF &rect = QRectF(), int xmargin = 50, int ymargin = 50)
void ensureVisible(qreal x, qreal y, qreal w, qreal h, int xmargin = 50, int ymargin = 50)
bool filtersChildEvents() const
QGraphicsItem::GraphicsItemFlags flags() const
QGraphicsItem *focusItem() const
QGraphicsItem *focusProxy() const
void grabKeyboard()
void grabMouse()
QGraphicsEffect *graphicsEffect() const
QGraphicsItemGroup *group() const
bool hasCursor() const
bool hasFocus() const
void hide()
Qt::InputMethodHints inputMethodHints() const
void (QGraphicsItem *filterItem) installSceneEventFilter(QGraphicsItem *filterItem)
bool isActive() const
bool isAncestorOf(const QGraphicsItem *child) const
bool isBlockedByModalPanel(QGraphicsItem **blockingPanel = nullptr) const
bool isClipped() const
bool isEnabled() const
bool isObscured(const QRectF &rect = QRectF()) const
bool isObscured(qreal x, qreal y, qreal w, qreal h) const
bool virtuel isObscuredBy(const QGraphicsItem *item) const
bool isPanel() const
bool isSelected() const
bool isUnderMouse() const
bool isVisible() const
bool isVisibleTo(const QGraphicsItem *parent) const
bool isWidget() const
bool isWindow() const
QTransform itemTransform(const QGraphicsItem *autre, bool *ok = nullptr) const
QPainterPath mapFromItem(const QGraphicsItem *item, const QPainterPath &path) const
QPointF mapFromItem(const QGraphicsItem *item, const QPointF &point) const
QPolygonF mapFromItem(const QGraphicsItem *item, const QPolygonF &polygon) const
QPolygonF mapFromItem(const QGraphicsItem *item, const QRectF &rect) const
QPolygonF mapFromItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
QPointF mapFromItem(const QGraphicsItem *item, qreal x, qreal y) const
QPainterPath mapFromParent(const QPainterPath &path) const
QPointF mapFromParent(const QPointF &point) const
QPolygonF mapFromParent(const QPolygonF &polygon) const
QPolygonF mapFromParent(const QRectF &rect) const
QPolygonF mapFromParent(qreal x, qreal y, qreal w, qreal h) const
QPointF mapFromParent(qreal x, qreal y) const
QPainterPath mapFromScene(const QPainterPath &path) const
QPointF mapFromScene(const QPointF &point) const
QPolygonF mapFromScene(const QPolygonF &polygon) const
QPolygonF mapFromScene(const QRectF &rect) const
QPolygonF mapFromScene(qreal x, qreal y, qreal w, qreal h) const
QPointF mapFromScene(qreal x, qreal y) const
QRectF mapRectFromItem(const QGraphicsItem *item, const QRectF &rect) const
QRectF mapRectFromItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
QRectF mapRectFromParent(const QRectF &rect) const
QRectF mapRectFromParent(qreal x, qreal y, qreal w, qreal h) const
QRectF mapRectFromScene(const QRectF &rect) const
QRectF mapRectFromScene(qreal x, qreal y, qreal w, qreal h) const
QRectF mapRectToItem(const QGraphicsItem *item, const QRectF &rect) const
QRectF mapRectToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
QRectF mapRectToParent(const QRectF &rect) const
QRectF mapRectToParent(qreal x, qreal y, qreal w, qreal h) const
QRectF mapRectToScene(const QRectF &rect) const
QRectF mapRectToScene(qreal x, qreal y, qreal w, qreal h) const
QPainterPath mapToItem(const QGraphicsItem *item, const QPainterPath &path) const
QPointF mapToItem(const QGraphicsItem *item, const QPointF &point) const
QPolygonF mapToItem(const QGraphicsItem *item, const QPolygonF &polygon) const
QPolygonF mapToItem(const QGraphicsItem *item, const QRectF &rect) const
QPolygonF mapToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
QPointF mapToItem(const QGraphicsItem *item, qreal x, qreal y) const
QPainterPath mapToParent(const QPainterPath &path) const
QPointF mapToParent(const QPointF &point) const
QPolygonF mapToParent(const QPolygonF &polygon) const
QPolygonF mapToParent(const QRectF &rect) const
QPolygonF mapToParent(qreal x, qreal y, qreal w, qreal h) const
QPointF mapToParent(qreal x, qreal y) const
QPainterPath mapToScene(const QPainterPath &path) const
QPointF mapToScene(const QPointF &point) const
QPolygonF mapToScene(const QPolygonF &polygon) const
QPolygonF mapToScene(const QRectF &rect) const
QPolygonF mapToScene(qreal x, qreal y, qreal w, qreal h) const
QPointF mapToScene(qreal x, qreal y) const
void moveBy(qreal dx, qreal dy)
qreal opacity() const
QPainterPath virtuel opaqueArea() const
virtuel void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) = 0
QGraphicsItem *panel() const
QGraphicsItem::PanelModality panelModality() const
QGraphicsItem *parentItem() const
QGraphicsObject *parentObject() const
QGraphicsWidget *parentWidget() const
QPointF pos() const
void (QGraphicsItem *filterItem) removeSceneEventFilter(QGraphicsItem *filterItem)
void resetTransform()
qreal rotation() const
qreal scale() const
QGraphicsScene *scene() const
QRectF sceneBoundingRect() const
QPointF scenePos() const
QTransform sceneTransform() const
void scroll(qreal dx, qreal dy, const QRectF &rect = QRectF())
void setAcceptDrops(bool on)
void setAcceptHoverEvents(bool enabled)
void (bool enabled) setAcceptTouchEvents(bool enabled)
void setAcceptedMouseButtons(Qt::MouseButtons buttons)
void setActive(bool active)
void setBoundingRegionGranularity( granularité qreal)
void setCacheMode(QGraphicsItem::CacheMode mode, const QSize &logicalCacheSize = QSize())
void setCursor(const QCursor &cursor)
void setData(int key, const QVariant &value)
void setEnabled(bool enabled)
vide setFiltersChildEvents(bool enabled)
void setFlag(QGraphicsItem::GraphicsItemFlag flag flag, bool enabled = true)
void setFlags(QGraphicsItem::GraphicsItemFlags flags)
void setFocus(Qt::FocusReason focusReason = Qt::OtherFocusReason)
void setFocusProxy(QGraphicsItem *item)
void setGraphicsEffect(QGraphicsEffect *effect)
void setGroup(QGraphicsItemGroup *groupe)
void setInputMethodHints(Qt::InputMethodHints hints)
void setOpacity(qreal opacity)
void setPanelModality(QGraphicsItem::PanelModality panelModality)
void setParentItem(QGraphicsItem *newParent)
void setPos(const QPointF &pos)
void setPos(qreal x, qreal y)
void setRotation(qreal angle)
void setScale(qreal factor)
void setSelected(bool sélectionné)
void setToolTip(const QString &toolTip)
void (const QString &toolTip) setTransform(const QTransform &matrix, bool combine = false)
void setTransformOriginPoint(const QPointF &origin)
void setTransformOriginPoint(qreal x, qreal y)
void setTransformations(const QList<QGraphicsTransform *> &transformations)
void setVisible(bool visible)
void (bool visible) setX(qreal x)
void setY(qreal y)
void setZValue(qreal z)
virtual QPainterPath shape() const
void show()
void (const QGraphicsItem *sibling) stackBefore(const QGraphicsItem *sibling)
QGraphicsObject *toGraphicsObject()
const QGraphicsObject *toGraphicsObject() const
QString toolTip() const
QGraphicsItem *topLevelItem() const
QGraphicsWidget *topLevelWidget() const
QTransform transform() const
QPointF transformOriginPoint() const
QList<QGraphicsTransform *> transformations() constantes
virtual int type() const
void ungrabKeyboard()
void ungrabMouse()
vide unsetCursor()
void update(const QRectF &rect = QRectF())
void update(qreal x, qreal y, qreal width, qreal height)
QGraphicsWidget *window() const
qréel x() const
qreal y() const
qreal zValue() const

Fonctions protégées

virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *event)
virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *event)
virtual void dragMoveEvent(QGraphicsSceneDragDropEvent *event)
virtual void dropEvent(QGraphicsSceneDragDropEvent *event)
virtual void focusInEvent(QFocusEvent *event)
virtual void focusOutEvent(QFocusEvent *event)
virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *event)
virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event)
virtual void inputMethodEvent(QInputMethodEvent *event)
virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const
virtual QVariant itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)
virtual void keyPressEvent(QKeyEvent *event)
virtual void keyReleaseEvent(QKeyEvent *event)
virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event)
virtual void mousePressEvent(QGraphicsSceneMouseEvent *event)
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
void prepareGeometryChange()
virtual bool sceneEvent(QEvent *event)
virtual bool sceneEventFilter(QGraphicsItem *watched, QEvent *event)
void updateMicroFocus()
virtual void wheelEvent(QGraphicsSceneWheelEvent *event)
T qgraphicsitem_cast(QGraphicsItem *item)

Description détaillée

Il fournit une base légère pour l'écriture de vos propres objets personnalisés. Cela inclut la définition de la géométrie de l'élément, la détection des collisions, l'implémentation de la peinture et l'interaction de l'élément par le biais de ses gestionnaires d'événements. QGraphicsItem fait partie du cadre d'affichage graphique.

Diverses formes et graphiques sur une grille

Par commodité, Qt fournit un ensemble d'éléments graphiques standard pour les formes les plus courantes. Ces éléments sont les suivants

Toutes les informations géométriques d'un élément sont basées sur son système de coordonnées locales. La position de l'élément, pos(), est la seule fonction qui n'opère pas en coordonnées locales, puisqu'elle renvoie une position en coordonnées parentales. Le système de coordonnées de la vue graphique décrit le système de coordonnées en détail.

Vous pouvez déterminer si un élément doit être visible (c'est-à-dire dessiné et acceptant des événements) en appelant setVisible(). Le masquage d'un élément entraîne également le masquage de ses enfants. De même, vous pouvez activer ou désactiver un élément en appelant setEnabled(). Si vous désactivez un élément, tous ses enfants seront également désactivés. Par défaut, les éléments sont à la fois visibles et activés. Pour activer ou désactiver la sélection d'un élément, activez d'abord la sélection en activant le drapeau ItemIsSelectable, puis appelez setSelected(). Normalement, la sélection est activée par la scène, à la suite d'une interaction de l'utilisateur.

Pour écrire votre propre élément graphique, vous devez d'abord créer une sous-classe de QGraphicsItem, puis commencer par implémenter ses deux fonctions publiques virtuelles pures : boundingRect(), qui renvoie une estimation de la zone peinte par l'élément, et paint(), qui implémente la peinture proprement dite. Voici un exemple :

class SimpleItem : public QGraphicsItem
{
public:
    QRectF boundingRect() const override
    {
        qreal penWidth = 1;
        return QRectF(-10 - penWidth / 2, -10 - penWidth / 2,
                      20 + penWidth, 20 + penWidth);
    }

    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
               QWidget *widget) override
    {
        painter->drawRoundedRect(-10, -10, 20, 20, 5, 5);
    }
};

La fonction boundingRect() a de nombreux objectifs différents. QGraphicsScene base son index d'élément sur boundingRect(), et QGraphicsView l'utilise à la fois pour éliminer les éléments invisibles et pour déterminer la zone qui doit être recomposée lors du dessin d'éléments qui se chevauchent. En outre, les mécanismes de détection des collisions de QGraphicsItem utilisent boundingRect() pour fournir une coupure efficace. L'algorithme de détection des collisions à grain fin dans collidesWithItem() est basé sur l'appel à shape(), qui renvoie un contour précis de la forme de l'élément sous la forme d'un QPainterPath.

QGraphicsScene s'attend à ce que tous les éléments boundingRect() et shape() restent inchangés à moins qu'il n'en soit informé. Si vous souhaitez modifier la géométrie d'un élément de quelque manière que ce soit, vous devez d'abord appeler prepareGeometryChange() pour permettre à QGraphicsScene de mettre à jour sa comptabilité.

La détection des collisions peut se faire de deux manières :

  1. Réimplémenter shape() pour renvoyer une forme précise pour votre objet, et s'appuyer sur l'implémentation par défaut de collidesWithItem() pour réaliser l'intersection forme-forme. Cela peut s'avérer assez coûteux si les formes sont complexes.
  2. Réimplémentez collidesWithItem() pour fournir votre propre algorithme personnalisé de collision entre l'objet et la forme.

La fonction contains() peut être appelée pour déterminer si l'élément contient un point ou non. Cette fonction peut également être réimplémentée par l'élément. Le comportement par défaut de contains() est basé sur l'appel de shape().

Les éléments peuvent contenir d'autres éléments et être contenus par d'autres éléments. Tous les éléments peuvent avoir un élément parent et une liste d'enfants. À moins que l'élément n'ait pas de parent, sa position est exprimée en coordonnées parentales (c'est-à-dire les coordonnées locales du parent). Les éléments parents propagent à la fois leur position et leur transformation à tous leurs enfants.

Plusieurs transformations du système de coordonnées

Transformations

QGraphicsItem prend en charge les transformations projectives en plus de sa position de base, pos(). Il existe plusieurs façons de modifier la transformation d'un élément. Pour les transformations simples, vous pouvez appeler l'une des fonctions de commodité setRotation() ou setScale(), ou vous pouvez passer n'importe quelle matrice de transformation à setTransform(). Pour un contrôle avancé des transformations, vous avez également la possibilité de définir plusieurs transformations combinées en appelant setTransformations().

Les transformations des éléments s'accumulent du parent à l'enfant, de sorte que si un élément parent et un élément enfant subissent tous deux une rotation de 90 degrés, la transformation totale de l'enfant sera de 180 degrés. De même, si le parent d'un élément est redimensionné à deux fois sa taille d'origine, ses enfants seront également deux fois plus grands. La transformation d'un élément n'affecte pas sa propre géométrie locale ; toutes les fonctions géométriques (par exemple, contains(), update() et toutes les fonctions de mappage) opèrent toujours en coordonnées locales. Par commodité, QGraphicsItem fournit les fonctions sceneTransform(), qui renvoie la matrice de transformation totale de l'élément (y compris sa position et les positions et transformations de tous les parents), et scenePos(), qui renvoie sa position en coordonnées de scène. Pour réinitialiser la matrice d'un élément, appelez resetTransform().

Certaines opérations de transformation produisent un résultat différent selon l'ordre dans lequel elles sont appliquées. Par exemple, si vous mettez à l'échelle une transformation, puis que vous la faites pivoter, vous obtiendrez un résultat différent de celui obtenu en faisant pivoter la transformation en premier. Toutefois, l'ordre dans lequel vous définissez les propriétés de transformation sur QGraphicsItem n'affecte pas la transformation résultante ; QGraphicsItem applique toujours les propriétés dans un ordre fixe et défini :

  • La transformation de base de l'élément est appliquée (transform())
  • La liste des transformations de l'élément est appliquée dans l'ordre (transformations())
  • L'élément est tourné par rapport à son point d'origine de transformation (rotation(), transformOriginPoint())
  • L'élément est mis à l'échelle par rapport à son point d'origine de transformation (scale(), transformOriginPoint())

Peinture

La fonction paint() est appelée par QGraphicsView pour peindre le contenu de l'élément. L'élément n'a pas d'arrière-plan ni de remplissage par défaut ; ce qui se trouve derrière l'élément transparaîtra dans toutes les zones qui ne sont pas explicitement peintes dans cette fonction. Vous pouvez appeler update() pour planifier un repeint, en passant éventuellement le rectangle qui a besoin d'être repeint. Selon que l'élément est visible ou non dans une vue, il peut être repeint ou non ; il n'y a pas d'équivalent à QWidget::repaint() dans QGraphicsItem.

Les éléments sont peints par la vue, en commençant par les éléments parents, puis en dessinant les enfants, dans l'ordre croissant d'empilement. Vous pouvez définir l'ordre d'empilement d'un élément en appelant setZValue(), et le tester en appelant zValue(), où les éléments ayant une faible valeur z sont peints avant les éléments ayant une valeur z élevée. L'ordre d'empilement s'applique aux éléments frères et sœurs ; les parents sont toujours dessinés avant leurs enfants.

Tri

Tous les éléments sont dessinés dans un ordre défini et stable, et c'est ce même ordre qui détermine les éléments qui recevront en premier l'entrée de la souris lorsque vous cliquez sur la scène. Normalement, vous n'avez pas à vous préoccuper du tri, car les éléments suivent un "ordre naturel", c'est-à-dire la structure logique de la scène.

Les enfants d'un élément sont empilés sur le parent, et les éléments frères sont empilés par ordre d'insertion (c'est-à-dire dans l'ordre dans lequel ils ont été ajoutés à la scène, ou ajoutés au même parent). Si vous ajoutez l'élément A, puis l'élément B, l'élément B se trouvera au-dessus de l'élément A. Si vous ajoutez ensuite l'élément C, l'ordre d'empilement des éléments sera le suivant : A, puis B, puis C.

Robot avec nœuds et membres numérotés

Cet exemple montre l'ordre d'empilement de tous les membres du robot de l'exemple de robot par glisser-déposer. Le torse est l'élément racine (tous les autres éléments sont des enfants ou des descendants du torse), il est donc dessiné en premier. Ensuite, la tête est dessinée, car c'est le premier élément de la liste des enfants du torse. Le bras supérieur gauche est ensuite dessiné. Comme le bras inférieur est un enfant du bras supérieur, le bras inférieur est dessiné, suivi par le frère suivant du bras supérieur, qui est le bras supérieur droit, et ainsi de suite.

Pour les utilisateurs expérimentés, il existe des moyens de modifier la façon dont les éléments sont triés :

  • Vous pouvez appeler setZValue() sur un élément pour l'empiler explicitement au-dessus ou au-dessous d'autres éléments frères. La valeur Z par défaut d'un élément est 0. Les éléments ayant la même valeur Z sont empilés par ordre d'insertion.
  • Vous pouvez appeler stackBefore() pour réorganiser la liste des enfants. Cela modifiera directement l'ordre d'insertion.
  • Vous pouvez définir l'indicateur ItemStacksBehindParent pour empiler un élément enfant derrière son parent.

L'ordre d'empilement de deux éléments frères compte également pour les enfants et les descendants de chaque élément. Ainsi, si un élément est placé au-dessus d'un autre, tous ses enfants seront également placés au-dessus de tous les enfants de l'autre élément.

Événements

QGraphicsItem reçoit des événements de QGraphicsScene par l'intermédiaire de la fonction virtuelle sceneEvent(). Cette fonction distribue les événements les plus courants à un ensemble de gestionnaires d'événements de commodité :

Vous pouvez filtrer les événements pour tout autre élément en installant des filtres d'événements. Cette fonctionnalité est distincte des filtres d'événements réguliers de Qt XML (voir QObject::installEventFilter()), qui ne fonctionnent que sur les sous-classes de QObject. Après avoir installé votre élément en tant que filtre d'événements pour un autre élément en appelant installSceneEventFilter(), les événements filtrés seront reçus par la fonction virtuelle sceneEventFilter(). Vous pouvez supprimer les filtres d'événements des éléments en appelant removeSceneEventFilter().

Données personnalisées

Il est parfois utile d'enregistrer des données personnalisées dans un élément, qu'il s'agisse d'un élément personnalisé ou d'un élément standard. Vous pouvez appeler setData() sur n'importe quel élément pour y stocker des données à l'aide d'une paire clé-valeur (la clé étant un entier et la valeur un QVariant). Pour obtenir des données personnalisées à partir d'un élément, appelez data(). Cette fonctionnalité n'est absolument pas modifiée par Qt lui-même ; elle est fournie pour la commodité de l'utilisateur.

Voir également QGraphicsScene, QGraphicsView, et Graphics View Framework.

Documentation sur les types de membres

enum QGraphicsItem::CacheMode

Cette énumération décrit les modes de cache de QGraphicsItem. La mise en cache est utilisée pour accélérer le rendu en allouant et en effectuant le rendu dans un tampon de pixels hors écran, qui peut être réutilisé lorsque l'élément doit être redessiné. Pour certains dispositifs de peinture, le cache est stocké directement dans la mémoire graphique, ce qui rend le rendu très rapide.

ConstanteValeurDescription
QGraphicsItem::NoCache0Par défaut, la mise en cache des éléments est désactivée. QGraphicsItem::paint() est appelé chaque fois que l'élément doit être redessiné.
QGraphicsItem::ItemCoordinateCache1La mise en cache est activée pour le système de coordonnées logique (local) de l'élément. QGraphicsItem crée un tampon de pixels hors écran d'une taille/résolution configurable que vous pouvez transmettre à QGraphicsItem::setCacheMode(). La qualité du rendu se dégrade généralement en fonction de la résolution du cache et de la transformation de l'élément. La première fois que l'élément est redessiné, il est rendu dans le cache, qui est ensuite réutilisé pour chaque exposition ultérieure. Le cache est également réutilisé lorsque l'élément est transformé. Pour ajuster la résolution du cache, vous pouvez appeler à nouveau setCacheMode().
QGraphicsItem::DeviceCoordinateCache2La mise en cache est activée au niveau du dispositif de peinture, dans les coordonnées du dispositif. Ce mode est destiné aux éléments qui peuvent se déplacer, mais qui ne sont ni tournés, ni mis à l'échelle, ni cisaillés. Si l'élément est transformé directement ou indirectement, le cache sera régénéré automatiquement. Contrairement au mode ItemCoordinateCache, le mode DeviceCoordinateCache permet toujours d'obtenir un rendu de qualité maximale.

Voir également QGraphicsItem::setCacheMode().

enum QGraphicsItem::GraphicsItemChange

Cette énumération décrit les changements d'état qui sont notifiés par QGraphicsItem::itemChange(). Les notifications sont envoyées au fur et à mesure que l'état change et, dans certains cas, des ajustements peuvent être effectués (voir la documentation de chaque changement pour plus de détails).

Remarque : soyez prudent lorsque vous appelez des fonctions sur le site QGraphicsItem lui-même à l'intérieur de itemChange(), car certains appels de fonction peuvent entraîner une récursivité indésirable. Par exemple, vous ne pouvez pas appeler setPos() dans itemChange() sur une notification ItemPositionChange, car la fonction setPos() appellera à nouveau itemChange(ItemPositionChange). Au lieu de cela, vous pouvez renvoyer la nouvelle position ajustée à partir de itemChange().

ConstanteValeurDescription
QGraphicsItem::ItemEnabledChange3L'état activé de l'élément change. Si l'élément est actuellement activé, il devient désactivé, et inversement. L'argument value est le nouvel état activé (c'est-à-dire true ou false). N'appelez pas setEnabled() dans itemChange() car cette notification est délivrée. Au lieu de cela, vous pouvez renvoyer le nouvel état à partir de itemChange().
QGraphicsItem::ItemEnabledHasChanged13L'état activé de l'élément a changé. L'argument value est le nouvel état activé (c'est-à-dire true ou false). N'appelez pas setEnabled() dans itemChange() car cette notification est délivrée. La valeur de retour est ignorée.
QGraphicsItem::ItemPositionChange0La position de l'élément change. Cette notification est envoyée si l'indicateur ItemSendsGeometryChanges est activé et lorsque la position locale de l'élément change par rapport à son parent (c'est-à-dire à la suite de l'appel à setPos() ou moveBy()). L'argument valeur est la nouvelle position (c'est-à-dire un QPointF). Vous pouvez appeler pos() pour obtenir la position d'origine. N'appelez pas setPos() ou moveBy() dans itemChange() lorsque cette notification est émise ; vous pouvez plutôt renvoyer la nouvelle position ajustée à partir de itemChange(). Après cette notification, QGraphicsItem envoie immédiatement la notification ItemPositionHasChanged si la position a changé.
QGraphicsItem::ItemPositionHasChanged9La position de l'élément a changé. Cette notification est envoyée si l'indicateur ItemSendsGeometryChanges est activé et après que la position locale de l'élément, par rapport à son parent, a changé. L'argument value est la nouvelle position (identique à pos()), et QGraphicsItem ignore la valeur de retour de cette notification (c'est-à-dire une notification en lecture seule).
QGraphicsItem::ItemTransformChange8La matrice de transformation de l'élément change. Cette notification est envoyée si l'indicateur ItemSendsGeometryChanges est activé et lorsque la matrice de transformation locale de l'élément change (c'est-à-dire à la suite de l'appel à setTransform(). L'argument valeur est la nouvelle matrice (c'est-à-dire QTransform) ; pour obtenir l'ancienne matrice, appelez transform(). N'appelez pas setTransform() et ne définissez aucune des propriétés de transformation dans itemChange() lorsque cette notification est envoyée ; au lieu de cela, vous pouvez renvoyer la nouvelle matrice à partir de itemChange(). Cette notification n'est pas envoyée si vous modifiez les propriétés de transformation.
QGraphicsItem::ItemTransformHasChanged10La matrice de transformation de l'élément a changé soit parce que setTransform a été appelé, soit parce qu'une des propriétés de transformation a été modifiée. Cette notification est envoyée si l'indicateur ItemSendsGeometryChanges est activé et après que la matrice de transformation locale de l'élément a changé. L'argument value est la nouvelle matrice (identique à transform()), et QGraphicsItem ignore la valeur de retour de cette notification (c'est-à-dire une notification en lecture seule).
QGraphicsItem::ItemRotationChange28La propriété de rotation de l'élément change. Cette notification est envoyée si l'indicateur ItemSendsGeometryChanges est activé et lorsque la propriété de rotation de l'élément change (c'est-à-dire à la suite de l'appel à setRotation()). L'argument valeur est la nouvelle rotation (c'est-à-dire un double) ; pour obtenir l'ancienne rotation, appelez rotation(). N'appelez pas setRotation() dans itemChange() car cette notification est délivrée ; à la place, vous pouvez renvoyer la nouvelle rotation à partir de itemChange().
QGraphicsItem::ItemRotationHasChanged29La propriété de rotation de l'élément a changé. Cette notification est envoyée si l'indicateur ItemSendsGeometryChanges est activé et après que la propriété de rotation de l'élément a changé. L'argument value est la nouvelle rotation (c'est-à-dire un double), et QGraphicsItem ignore la valeur de retour pour cette notification (c'est-à-dire une notification en lecture seule). N'appelez pas setRotation() dans itemChange() car cette notification est délivrée.
QGraphicsItem::ItemScaleChange30La propriété d'échelle de l'élément change. Cette notification est envoyée si l'indicateur ItemSendsGeometryChanges est activé et lorsque la propriété d'échelle de l'élément change (c'est-à-dire à la suite de l'appel à setScale()). L'argument valeur est la nouvelle échelle (c'est-à-dire un double) ; pour obtenir l'ancienne échelle, appelez scale(). N'appelez pas setScale() dans itemChange() car cette notification est délivrée ; à la place, vous pouvez renvoyer la nouvelle échelle à partir de itemChange().
QGraphicsItem::ItemScaleHasChanged31La propriété d'échelle de l'élément a changé. Cette notification est envoyée si l'indicateur ItemSendsGeometryChanges est activé et après que la propriété d'échelle de l'élément a changé. L'argument value est la nouvelle échelle (c'est-à-dire un double), et QGraphicsItem ignore la valeur de retour pour cette notification (c'est-à-dire une notification en lecture seule). N'appelez pas setScale() dans itemChange() car cette notification est délivrée.
QGraphicsItem::ItemTransformOriginPointChange32La propriété du point d'origine de la transformation de l'élément change. Cette notification est envoyée si l'indicateur ItemSendsGeometryChanges est activé et lorsque la propriété du point d'origine de la transformation de l'élément change (c'est-à-dire à la suite de l'appel à setTransformOriginPoint()). L'argument valeur est le nouveau point d'origine (c'est-à-dire un QPointF) ; pour obtenir l'ancien point d'origine, appelez transformOriginPoint(). N'appelez pas setTransformOriginPoint() dans itemChange() car cette notification est délivrée ; à la place, vous pouvez renvoyer le nouveau point d'origine de la transformation à partir de itemChange().
QGraphicsItem::ItemTransformOriginPointHasChanged33La propriété du point d'origine de la transformation de l'élément a changé. Cette notification est envoyée si l'indicateur ItemSendsGeometryChanges est activé et après que la propriété du point d'origine de la transformation de l'élément a changé. L'argument value est le nouveau point d'origine (c'est-à-dire un QPointF), et QGraphicsItem ignore la valeur de retour de cette notification (c'est-à-dire une notification en lecture seule). N'appelez pas setTransformOriginPoint() dans itemChange() car cette notification est délivrée.
QGraphicsItem::ItemSelectedChange4L'état de sélection de l'élément change. Si l'élément est actuellement sélectionné, il devient non sélectionné, et vice versa. L'argument value est le nouvel état sélectionné (c'est-à-dire true ou false). N'appelez pas setSelected() dans itemChange() car cette notification est délivrée ; à la place, vous pouvez renvoyer le nouvel état sélectionné à partir de itemChange().
QGraphicsItem::ItemSelectedHasChanged14L'état sélectionné de l'élément a changé. L'argument value est le nouvel état sélectionné (c'est-à-dire true ou false). N'appelez pas setSelected() dans itemChange() car cette notification est délivrée. La valeur de retour est ignorée.
QGraphicsItem::ItemVisibleChange2L'état visible de l'élément change. Si l'élément est actuellement visible, il devient invisible, et inversement. L'argument value est le nouvel état visible (c'est-à-dire true ou false). N'appelez pas setVisible() dans itemChange() car cette notification est délivrée ; à la place, vous pouvez renvoyer le nouvel état visible à partir de itemChange().
QGraphicsItem::ItemVisibleHasChanged12L'état visible de l'élément a changé. L'argument value est le nouvel état visible (c'est-à-dire true ou false). N'appelez pas setVisible() dans itemChange() car cette notification est délivrée. La valeur de retour est ignorée.
QGraphicsItem::ItemParentChange5Le parent de l'élément change. L'argument value est le nouvel élément parent (c'est-à-dire un pointeur QGraphicsItem ). N'appelez pas setParentItem() dans itemChange() lorsque cette notification est délivrée ; à la place, vous pouvez renvoyer le nouveau parent à partir de itemChange().
QGraphicsItem::ItemParentHasChanged15Le parent de l'élément a changé. L'argument value est le nouveau parent (c'est-à-dire un pointeur sur QGraphicsItem). N'appelez pas setParentItem() dans itemChange() car cette notification est délivrée. La valeur de retour est ignorée.
QGraphicsItem::ItemChildAddedChange6Un enfant est ajouté à cet élément. L'argument valeur est le nouvel élément enfant (c'est-à-dire un pointeur QGraphicsItem ). Ne pas transmettre cet élément à la fonction setParentItem() d'un autre élément lors de la diffusion de cette notification. La valeur de retour est inutilisée ; vous ne pouvez rien ajuster dans cette notification. Notez que le nouvel enfant peut ne pas être complètement construit lorsque cette notification est envoyée ; appeler des fonctions virtuelles pures sur l'enfant peut conduire à un crash.
QGraphicsItem::ItemChildRemovedChange7Un enfant est retiré de cet élément. L'argument value est l'élément enfant qui va être supprimé (c'est-à-dire un pointeur QGraphicsItem ). La valeur de retour est inutilisée ; vous ne pouvez rien ajuster dans cette notification.
QGraphicsItem::ItemSceneChange11L'élément est déplacé vers une nouvelle scène. Cette notification est également envoyée lorsque l'élément est ajouté à sa scène initiale et lorsqu'il est retiré. L'argument scene() de l'élément est l'ancienne scène, ou nullptr si l'élément n'a pas encore été ajouté à une scène. L'argument value est la nouvelle scène (c'est-à-dire un pointeur QGraphicsScene ), ou nullptr si l'élément est retiré d'une scène. N'annulez pas ce changement en passant cet élément à QGraphicsScene::addItem() lorsque cette notification est délivrée ; vous pouvez au contraire renvoyer la nouvelle scène à partir de itemChange(). Utilisez cette fonctionnalité avec prudence ; s'opposer à un changement de scène peut rapidement conduire à une récursivité indésirable.
QGraphicsItem::ItemSceneHasChanged16La scène de l'élément a changé. La nouvelle scène de l'élément est scene(). Cette notification est également envoyée lorsque l'élément est ajouté à sa scène initiale et lorsqu'il est supprimé. L'argument value est la nouvelle scène (c'est-à-dire un pointeur sur QGraphicsScene). N'appelez pas setScene() dans itemChange() car cette notification est envoyée. La valeur de retour est ignorée.
QGraphicsItem::ItemCursorChange17Le curseur de l'élément change. L'argument valeur est le nouveau curseur (c'est-à-dire un QCursor). N'appelez pas setCursor() dans itemChange() lorsque cet avis est délivré. Au lieu de cela, vous pouvez renvoyer un nouveau curseur à partir de itemChange().
QGraphicsItem::ItemCursorHasChanged18Le curseur de l'élément a changé. L'argument valeur est le nouveau curseur (c'est-à-dire un QCursor). N'appelez pas setCursor() lorsque cette notification est délivrée. La valeur de retour est ignorée.
QGraphicsItem::ItemToolTipChange19L'info-bulle de l'élément a changé. L'argument valeur est la nouvelle infobulle (c'est-à-dire un QToolTip). N'appelez pas setToolTip() dans itemChange() lorsque cette notification est délivrée. Au lieu de cela, vous pouvez renvoyer une nouvelle info-bulle à partir de itemChange().
QGraphicsItem::ItemToolTipHasChanged20L'info-bulle de l'élément a changé. L'argument value est la nouvelle info-bulle (c'est-à-dire un QToolTip). N'appelez pas setToolTip() lorsque cette notification est délivrée. La valeur de retour est ignorée.
QGraphicsItem::ItemFlagsChange21Les drapeaux de l'élément ont changé. L'argument value est le nouveau drapeau (c'est-à-dire un quint32). N'appelez pas setFlags() dans itemChange() lorsque cet avis est délivré. Au lieu de cela, vous pouvez renvoyer les nouveaux drapeaux à partir de itemChange().
QGraphicsItem::ItemFlagsHaveChanged22Les drapeaux de l'élément ont changé. L'argument value est le nouveau drapeau (c'est-à-dire un quint32). N'appelez pas setFlags() dans itemChange() car cette notification est délivrée. La valeur de retour est ignorée.
QGraphicsItem::ItemZValueChange23La valeur Z de l'élément change. L'argument value est la nouvelle valeur Z (c'est-à-dire un double). N'appelez pas setZValue() dans itemChange() lorsque cet avis est délivré. Au lieu de cela, vous pouvez renvoyer une nouvelle valeur Z à partir de itemChange().
QGraphicsItem::ItemZValueHasChanged24La valeur Z de l'élément a changé. L'argument value est la nouvelle valeur Z (c'est-à-dire un double). N'appelez pas setZValue() lorsque cette notification est délivrée. La valeur de retour est ignorée.
QGraphicsItem::ItemOpacityChange25L'opacité de l'élément change. L'argument value est la nouvelle opacité (c'est-à-dire un double). N'appelez pas setOpacity() dans itemChange() lorsque cet avis est délivré. Au lieu de cela, vous pouvez renvoyer une nouvelle opacité à partir de itemChange().
QGraphicsItem::ItemOpacityHasChanged26L'opacité de l'élément a changé. L'argument value est la nouvelle opacité (c'est-à-dire un double). N'appelez pas setOpacity() lorsque cette notification est délivrée. La valeur de retour est ignorée.
QGraphicsItem::ItemScenePositionHasChanged27La position de l'élément sur la scène a changé. Cette notification est envoyée si le drapeau ItemSendsScenePositionChanges est activé et après que la position de l'élément dans la scène a changé (c'est-à-dire que la position ou la transformation de l'élément lui-même ou la position ou la transformation de tout ancêtre a changé). L'argument value est la nouvelle position de la scène (identique à scenePos()), et QGraphicsItem ignore la valeur de retour de cette notification (c'est-à-dire une notification en lecture seule).

enum QGraphicsItem::GraphicsItemFlag
flags QGraphicsItem::GraphicsItemFlags

Cette énumération décrit les différents drapeaux que vous pouvez définir sur un élément pour activer différentes fonctions dans le comportement de l'élément.

Tous les drapeaux sont désactivés par défaut.

ConstanteValeurDescription
QGraphicsItem::ItemIsMovable0x1L'élément prend en charge les déplacements interactifs à l'aide de la souris. En cliquant sur l'élément et en le faisant glisser, l'élément se déplace en même temps que le curseur de la souris. Si l'élément a des enfants, tous les enfants sont également déplacés. Si l'élément fait partie d'une sélection, tous les éléments sélectionnés sont également déplacés. Cette fonctionnalité est fournie à titre de commodité par l'implémentation de base des gestionnaires d'événements de souris de QGraphicsItem.
QGraphicsItem::ItemIsSelectable0x2L'élément supporte la sélection. L'activation de cette fonctionnalité permettra à setSelected() de basculer la sélection de l'élément. Elle permettra également à l'élément d'être sélectionné automatiquement à la suite de l'appel à QGraphicsScene::setSelectionArea(), d'un clic sur un élément ou de l'utilisation de la sélection par élastique dans QGraphicsView.
QGraphicsItem::ItemIsFocusable0x4L'élément prend en charge la focalisation de l'entrée clavier (c'est-à-dire qu'il s'agit d'un élément d'entrée). L'activation de ce drapeau permet à l'élément d'accepter le focus, ce qui permet à nouveau la transmission d'événements clés à QGraphicsItem::keyPressEvent() et QGraphicsItem::keyReleaseEvent().
QGraphicsItem::ItemClipsToShape0x8L'élément s'attache à sa propre forme. L'élément ne peut pas dessiner ou recevoir des événements de souris, de tablette, de glisser-déposer ou de survol en dehors de sa forme. Il est désactivé par défaut. Ce comportement est appliqué par QGraphicsView::drawItems() ou QGraphicsScene::drawItems(). Ce drapeau a été introduit dans Qt 4.3.
QGraphicsItem::ItemClipsChildrenToShape0x10L'élément clive la peinture de tous ses descendants sur sa propre forme. Les éléments qui sont des enfants directs ou indirects de cet élément ne peuvent pas dessiner en dehors de la forme de cet élément. Par défaut, ce drapeau est désactivé ; les enfants peuvent dessiner n'importe où. Ce comportement est appliqué par QGraphicsView::drawItems() ou QGraphicsScene::drawItems(). Cet indicateur a été introduit dans Qt 4.3.

Note : Ce drapeau est similaire à ItemContainsChildrenInShape mais en plus il applique le confinement en coupant les enfants.

ConstanteValeurDescription
QGraphicsItem::ItemIgnoresTransformations0x20L'élément ignore les transformations héritées (c'est-à-dire que sa position est toujours ancrée à son parent, mais que les transformations de rotation, de zoom ou de cisaillement du parent ou de la vue sont ignorées). Cette option est utile pour maintenir les étiquettes de texte horizontales et non redimensionnées, de sorte qu'elles restent lisibles en cas de transformation de la vue. Lorsqu'il est activé, la géométrie de la vue et la géométrie de la scène de l'élément sont maintenues séparément. Vous devez appeler deviceTransform() pour mapper les coordonnées et détecter les collisions dans la vue. Par défaut, cet indicateur est désactivé. Ce drapeau a été introduit dans Qt 4.3.

Note : Avec ce drapeau activé, vous pouvez toujours mettre à l'échelle l'élément lui-même, et cette transformation d'échelle influencera les enfants de l'élément.

ConstanteValeurDescription
QGraphicsItem::ItemIgnoresParentOpacity0x40L'élément ignore l'opacité de son parent. L'opacité effective de l'élément est la même que la sienne ; elle ne se combine pas avec l'opacité du parent. Ce drapeau permet à l'élément de conserver son opacité absolue même si le parent est semi-transparent. Ce drapeau a été introduit dans Qt 4.5.
QGraphicsItem::ItemDoesntPropagateOpacityToChildren0x80L'élément ne propage pas son opacité à ses enfants. Ce drapeau permet de créer un élément semi-transparent qui n'affecte pas l'opacité de ses enfants. Ce drapeau a été introduit dans Qt 4.5.
QGraphicsItem::ItemStacksBehindParent0x100L'élément est empilé derrière son parent. Par défaut, les éléments enfants sont empilés sur l'élément parent. Mais en activant cet indicateur, l'élément enfant sera empilé derrière le parent. Cette option est utile pour les effets d'ombre portée et pour les objets de décoration qui suivent la géométrie de l'élément parent sans dessiner par-dessus. Cette option a été introduite dans Qt 4.5.
QGraphicsItem::ItemUsesExtendedStyleOption0x200L'élément utilise soit exposedRect soit QStyleOptionGraphicsItem. Par défaut, exposedRect est initialisé à boundingRect() de l'élément. Vous pouvez activer ce drapeau pour que les options de style soient configurées avec des valeurs plus fines. Utilisez QStyleOptionGraphicsItem::levelOfDetailFromTransform() si vous avez besoin d'une valeur plus élevée. Cet indicateur a été introduit dans Qt 4.6.
QGraphicsItem::ItemHasNoContents0x400L'élément n'est pas peint (c'est-à-dire que l'appel à paint() sur l'élément n'a aucun effet). Il est conseillé d'activer ce drapeau pour les éléments qui n'ont pas besoin d'être peints afin de s'assurer que Graphics View évite les préparations de peinture inutiles. Ce drapeau a été introduit dans Qt 4.6.
QGraphicsItem::ItemSendsGeometryChanges0x800L'élément active les notifications itemChange() pour ItemPositionChange, ItemPositionHasChanged, ItemTransformChange, ItemTransformHasChanged, ItemRotationChange, ItemRotationHasChanged, ItemScaleChange, ItemScaleHasChanged, ItemTransformOriginPointChange, et ItemTransformOriginPointHasChanged. Pour des raisons de performance, ces notifications sont désactivées par défaut. Vous devez activer ce drapeau pour recevoir des notifications sur les changements de position et de transformation. Cet indicateur a été introduit dans Qt 4.6.
QGraphicsItem::ItemAcceptsInputMethod0x1000L'élément prend en charge les méthodes d'entrée généralement utilisées pour les langues asiatiques. Cet indicateur a été introduit dans Qt 4.6.
QGraphicsItem::ItemNegativeZStacksBehindParent0x2000L'élément s'empile automatiquement derrière son parent si sa valeur z est négative. Cet indicateur permet à setZValue() de faire basculer ItemStacksBehindParent. Ce drapeau a été introduit dans Qt 4.6.
QGraphicsItem::ItemIsPanel0x4000L'élément est un panneau. Un panneau permet de gérer l'activation et le focus contenu. Un seul panneau peut être actif à la fois (voir QGraphicsItem::isActive()). Lorsqu'aucun panneau n'est actif, QGraphicsScene active tous les éléments qui ne sont pas des panneaux. Les éléments de la fenêtre (c'est-à-dire que QGraphicsItem::isWindow() renvoie true) sont des panneaux. Cet indicateur a été introduit dans Qt 4.6.
QGraphicsItem::ItemSendsScenePositionChanges0x10000L'élément active les notifications itemChange() pour ItemScenePositionHasChanged. Pour des raisons de performance, ces notifications sont désactivées par défaut. Vous devez activer cet indicateur pour recevoir des notifications concernant les changements de position de la scène. Cet indicateur a été introduit dans Qt 4.6.
QGraphicsItem::ItemContainsChildrenInShape0x80000Il indique que tous les enfants directs ou indirects de l'élément ne dessinent qu'à l'intérieur de la forme de l'élément. Contrairement à ItemClipsChildrenToShape, cette restriction n'est pas appliquée. Définissez ItemContainsChildrenInShape lorsque vous vous assurez manuellement que le dessin est lié à la forme de l'élément et que vous souhaitez éviter les coûts associés à l'application du clip. L'activation de cet indicateur permet d'améliorer l'efficacité du dessin et de la détection des collisions. Cet indicateur est désactivé par défaut.

Remarque : si cet indicateur et ItemClipsChildrenToShape sont tous deux activés, le clip sera appliqué. Cela équivaut à définir ItemClipsChildrenToShape.

Ce drapeau a été introduit dans Qt 5.4.

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

enum QGraphicsItem::PanelModality

Cette énumération spécifie le comportement d'un panneau modal. Un panneau modal est un panneau qui bloque la saisie des autres panneaux. Notez que les éléments qui sont des enfants d'un panneau modal ne sont pas bloqués.

Les valeurs sont les suivantes :

ConstanteValeurDescription
QGraphicsItem::NonModal0Le panneau n'est pas modal et ne bloque pas la saisie dans les autres panneaux. Il s'agit de la valeur par défaut pour les panneaux.
QGraphicsItem::PanelModal1Le panneau est modal pour une hiérarchie d'éléments unique et bloque la saisie dans son volet parent, dans tous les panneaux grand-parents et dans tous les frères et sœurs de ses panneaux parent et grand-parent.
QGraphicsItem::SceneModal2La fenêtre est modale pour l'ensemble de la scène et bloque la saisie pour tous les panneaux.

Voir également QGraphicsItem::setPanelModality(), QGraphicsItem::panelModality() et QGraphicsItem::ItemIsPanel.

[anonymous] enum

La valeur renvoyée par la fonction virtuelle type() dans les classes d'éléments graphiques standard de Qt. Toutes ces classes d'éléments graphiques standard dans Qt sont associées à une valeur unique pour Type, par exemple la valeur renvoyée par QGraphicsPathItem::type() est 2.

ConstanteValeurDescription
QGraphicsItem::Type1
class QGraphicsPathItem : public QAbstractGraphicsShapeItem
{
 public:
  enum { Type = 2 };
    int type() const override { return Type; }
  ...
};
QGraphicsItem::UserType65536La valeur la plus basse renvoyée par la fonction virtuelle type() pour les sous-classes personnalisées de QGraphicsItem.
class CustomItem : public QGraphicsItem
{
public:
   enum { Type = UserType + 1 };

   int type() const override
   {
       // Enable the use of qgraphicsitem_cast with this item.
       return Type;
   }
   ...
};

Documentation des fonctions membres

[explicit] QGraphicsItem::QGraphicsItem(QGraphicsItem *parent = nullptr)

Construit un QGraphicsItem avec l'élément parent donné. Il ne modifie pas l'objet parent renvoyé par QObject::parent().

Si parent est nullptr, vous pouvez ajouter l'élément à une scène en appelant QGraphicsScene::addItem(). L'élément deviendra alors un élément de premier niveau.

Voir également QGraphicsScene::addItem() et setParentItem().

[virtual noexcept] QGraphicsItem::~QGraphicsItem()

Détruit le site QGraphicsItem et tous ses enfants. Si cet élément est actuellement associé à une scène, il sera retiré de la scène avant d'être supprimé.

Remarque : il est plus efficace de supprimer l'élément du site QGraphicsScene avant de le détruire.

bool QGraphicsItem::acceptDrops() const

Renvoie true si cet élément peut accepter des événements de glisser-déposer ; sinon, renvoie false. Par défaut, les éléments n'acceptent pas les événements de glisser-déposer ; les éléments sont transparents au glisser-déposer.

Voir aussi setAcceptDrops().

bool QGraphicsItem::acceptHoverEvents() const

Renvoie true si un élément accepte les événements de survol (QGraphicsSceneHoverEvent) ; sinon, renvoie false. Par défaut, les éléments n'acceptent pas les événements de survol.

Voir également setAcceptHoverEvents() et setAcceptedMouseButtons().

bool QGraphicsItem::acceptTouchEvents() const

Renvoie true si un élément accepte touch events; sinon, renvoie false. Par défaut, les éléments n'acceptent pas les événements tactiles.

Voir aussi setAcceptTouchEvents().

Qt::MouseButtons QGraphicsItem::acceptedMouseButtons() const

Renvoie les boutons de souris pour lesquels cet élément accepte les événements de souris. Par défaut, tous les boutons de la souris sont acceptés.

Si un élément accepte un bouton de souris, il deviendra l'élément de saisie de la souris lorsqu'un événement de pression de la souris sera délivré pour ce bouton de souris. Toutefois, si l'élément n'accepte pas le bouton, QGraphicsScene transmettra les événements de souris au premier élément inférieur qui les accepte.

Voir également setAcceptedMouseButtons() et mousePressEvent().

[virtual] void QGraphicsItem::advance(int phase)

Cette fonction virtuelle est appelée deux fois pour tous les éléments par le slot QGraphicsScene::advance(). Dans un premier temps, tous les éléments sont appelés avec phase == 0, ce qui indique que les éléments de la scène sont sur le point d'avancer, puis tous les éléments sont appelés avec phase == 1. Réimplémentez cette fonction pour mettre à jour votre élément si vous avez besoin d'une simple animation contrôlée par la scène.

L'implémentation par défaut ne fait rien.

Cette fonction est destinée aux animations. Une alternative consiste à hériter plusieurs fois de QObject et QGraphicsItem et à utiliser le cadre d'animation.

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

[pure virtual] QRectF QGraphicsItem::boundingRect() const

Cette fonction virtuelle pure définit les limites extérieures de l'élément sous la forme d'un rectangle ; toute peinture doit être limitée à l'intérieur du rectangle de délimitation de l'élément. QGraphicsView utilise cette fonction pour déterminer si l'élément doit être redessiné.

Bien que la forme de l'élément puisse être arbitraire, le rectangle de délimitation est toujours rectangulaire et n'est pas affecté par la transformation de l'élément.

Si vous souhaitez modifier le rectangle de délimitation de l'élément, vous devez d'abord appeler prepareGeometryChange(). Cela permet de notifier la scène du changement imminent, afin qu'elle puisse mettre à jour l'index géométrique de l'élément ; sinon, la scène ne sera pas au courant de la nouvelle géométrie de l'élément, et les résultats ne seront pas définis (typiquement, des artefacts de rendu sont laissés à l'intérieur de la vue).

Réimplémentez cette fonction pour permettre à QGraphicsView de déterminer quelles parties du widget, le cas échéant, doivent être redessinées.

Remarque : pour les formes qui peignent un contour ou un trait, il est important d'inclure la moitié de la largeur du stylo dans le rectangle de délimitation. Il n'est cependant pas nécessaire de compenser l'anticrénelage.

Exemple :

QRectF CircleItem::boundingRect() const
{
    qreal penWidth = 1;
    return QRectF(-radius - penWidth / 2, -radius - penWidth / 2,
                  diameter + penWidth, diameter + penWidth);
}

Voir également boundingRegion(), shape(), contains(), Le système de coordonnées de la vue graphique, et prepareGeometryChange().

QRegion QGraphicsItem::boundingRegion(const QTransform &itemToDeviceTransform) const

Renvoie la région délimitée pour cet élément. L'espace de coordonnées de la région renvoyée dépend de itemToDeviceTransform. Si vous passez une identité QTransform en paramètre, cette fonction renverra une région de coordonnées locales.

La région délimitée décrit un contour grossier du contenu visuel de l'élément. Bien qu'elle soit coûteuse à calculer, elle est également plus précise que boundingRect() et permet d'éviter de repeindre inutilement un élément lorsqu'il est mis à jour. Cette méthode est particulièrement efficace pour les éléments fins (par exemple, les lignes ou les polygones simples). Vous pouvez régler la granularité de la région délimitée en appelant setBoundingRegionGranularity(). La granularité par défaut est 0 ; dans ce cas, la région de délimitation de l'élément est la même que son rectangle de délimitation.

itemToDeviceTransform est la transformation des coordonnées de l'élément en coordonnées de l'appareil. Si vous souhaitez que cette fonction renvoie un QRegion en coordonnées de scène, vous pouvez passer sceneTransform() comme argument.

Voir aussi boundingRegionGranularity().

qreal QGraphicsItem::boundingRegionGranularity() const

Renvoie la granularité de la région délimitée de l'élément ; une valeur comprise entre 0 et 1. La valeur par défaut est 0 (c'est-à-dire la granularité la plus faible, où la région délimitée correspond au rectangle de délimitation de l'élément).

Voir également setBoundingRegionGranularity().

QGraphicsItem::CacheMode QGraphicsItem::cacheMode() const

Renvoie le mode de cache pour cet élément. Le mode par défaut est NoCache (c'est-à-dire que le cache est désactivé et que toute la peinture est immédiate).

Voir aussi setCacheMode().

QList<QGraphicsItem *> QGraphicsItem::childItems() const

Renvoie une liste des enfants de cet élément.

Les éléments sont triés par ordre d'empilement. Cet ordre tient compte à la fois de l'ordre d'insertion des éléments et de leur valeur Z.

Voir aussi setParentItem(), zValue() et Sorting.

QRectF QGraphicsItem::childrenBoundingRect() const

Renvoie le rectangle de délimitation des descendants de cet élément (c'est-à-dire ses enfants, leurs enfants, etc.) en coordonnées locales. ) en coordonnées locales. Le rectangle contiendra tous les descendants après qu'ils aient été mis en correspondance avec les coordonnées locales. Si l'élément n'a pas d'enfants, cette fonction renvoie un QRectF vide.

Cela n'inclut pas le rectangle de délimitation de l'élément ; la fonction renvoie uniquement le rectangle de délimitation cumulé de ses descendants. Si vous devez inclure le rectangle de délimitation de cet élément, vous pouvez ajouter boundingRect() à childrenBoundingRect() à l'aide de QRectF::operator|().

Cette fonction est d'une complexité linéaire ; elle détermine la taille du rectangle de délimitation retourné en itérant à travers tous les descendants.

Voir également boundingRect() et sceneBoundingRect().

void QGraphicsItem::clearFocus()

Prend le focus de la saisie clavier de l'élément.

S'il a le focus, un message focus out event est envoyé à cet élément pour l'informer qu'il est sur le point de perdre le focus.

Seuls les éléments qui définissent le drapeau ItemIsFocusable ou les widgets qui définissent une politique de mise au point appropriée peuvent accepter la mise au point du clavier.

Voir également setFocus(), hasFocus() et QGraphicsWidget::focusPolicy.

QPainterPath QGraphicsItem::clipPath() const

Renvoie le chemin de clip de cet élément, ou une adresse QPainterPath vide si l'élément n'est pas clippé. Le chemin d'accès limite l'apparence et l'interaction de l'élément (c'est-à-dire qu'il restreint la zone à l'intérieur de laquelle l'élément peut dessiner et pour laquelle il peut recevoir des événements).

Vous pouvez activer l'écrêtage en définissant les drapeaux ItemClipsToShape ou ItemClipsChildrenToShape. La trajectoire d'écrêtage de l'élément est calculée en intersectant toutes les formes des ancêtres de l'écrêtage. Si l'élément définit ItemClipsToShape, le clip final est intersecté avec la propre forme de l'élément.

Remarque : l'écrêtage pénalise les performances de tous les éléments concernés ; vous devriez généralement éviter d'utiliser l'écrêtage si vous le pouvez (par exemple, si vos éléments dessinent toujours à l'intérieur des limites boundingRect() ou shape(), l'écrêtage n'est pas nécessaire).

Voir aussi isClipped(), shape() et setFlags().

[virtual] bool QGraphicsItem::collidesWithItem(const QGraphicsItem *other, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const

Renvoie true si cet élément entre en collision avec other; sinon, renvoie false.

La valeur de mode est appliquée à other, et la forme ou le rectangle de délimitation qui en résulte est ensuite comparé à la forme de cet élément. La valeur par défaut de mode est Qt::IntersectsItemShape; other entre en collision avec cet élément s'il coupe, contient ou est contenu par la forme de cet élément (voir Qt::ItemSelectionMode pour plus de détails).

L'implémentation par défaut est basée sur l'intersection des formes et appelle shape() sur les deux éléments. Comme la complexité de l'intersection arbitraire d'une forme et d'une autre croît d'un ordre de grandeur lorsque les formes sont complexes, cette opération peut prendre beaucoup de temps. Vous avez la possibilité de réimplémenter cette fonction dans une sous-classe de QGraphicsItem afin de fournir un algorithme personnalisé. Cela vous permet d'utiliser des contraintes naturelles dans les formes de vos propres objets, afin d'améliorer les performances de la détection des collisions. Par exemple, la collision de deux objets parfaitement circulaires non transformés peut être déterminée très efficacement en comparant leurs positions et leurs rayons.

N'oubliez pas que lorsque vous réimplémentez cette fonction et que vous appelez shape() ou boundingRect() sur other, les coordonnées renvoyées doivent être mises en correspondance avec le système de coordonnées de cet élément avant qu'une intersection puisse avoir lieu.

Voir également contains() et shape().

[virtual] bool QGraphicsItem::collidesWithPath(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const

Renvoie true si cet élément entre en collision avec path.

La collision est déterminée par mode. La valeur par défaut de mode est Qt::IntersectsItemShape; path entre en collision avec cet élément s'il coupe, contient ou est contenu par la forme de cet élément.

Notez que cette fonction vérifie si la forme ou le rectangle de délimitation de l'élément (en fonction de mode) est contenu dans path, et non si path est contenu dans la forme ou le rectangle de délimitation de l'élément.

Voir également collidesWithItem(), contains() et shape().

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

Renvoie une liste de tous les éléments qui entrent en collision avec cet élément.

La façon dont les collisions sont détectées est déterminée en appliquant mode aux éléments qui sont comparés à cet élément, c'est-à-dire que la forme ou le rectangle de délimitation de chaque élément est vérifié par rapport à la forme de cet élément. La valeur par défaut de mode est Qt::IntersectsItemShape.

Voir également collidesWithItem().

QGraphicsItem *QGraphicsItem::commonAncestorItem(const QGraphicsItem *other) const

Renvoie l'ancêtre commun le plus proche de cet élément et de other, ou nullptr si other est nullptr, ou s'il n'y a pas d'ancêtre commun.

Voir aussi isAncestorOf().

[virtual] bool QGraphicsItem::contains(const QPointF &point) const

Renvoie true si cet élément contient point, qui est en coordonnées locales ; sinon, elle renvoie false. Elle est le plus souvent appelée à partir de QGraphicsView pour déterminer quel élément se trouve sous le curseur, et pour cette raison, l'implémentation de cette fonction doit être aussi légère que possible.

Par défaut, cette fonction appelle shape(), mais vous pouvez la réimplémenter dans une sous-classe pour fournir une implémentation (peut-être plus efficace).

Voir aussi shape(), boundingRect() et collidesWithPath().

[virtual protected] void QGraphicsItem::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)

Ce gestionnaire d'événements peut être réimplémenté dans une sous-classe pour traiter les événements du menu contextuel. Le paramètre event contient des détails sur l'événement à traiter.

Si vous ignorez l'événement (c'est-à-dire en appelant QEvent::ignore()), event se propagera à tout élément situé sous cet élément. Si aucun élément n'accepte l'événement, il sera ignoré par la scène et se propagera à la vue.

Il est courant d'ouvrir un site QMenu en réponse à la réception d'un événement de menu contextuel. Exemple :

void CustomItem::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
{
    QMenu menu;
    QAction *removeAction = menu.addAction("Remove");
    QAction *markAction = menu.addAction("Mark");
    QAction *selectedAction = menu.exec(event->screenPos());
    // ...
}

L'implémentation par défaut ignore l'événement.

Voir aussi sceneEvent().

QCursor QGraphicsItem::cursor() const

Renvoie la forme actuelle du curseur pour l'élément. Le curseur de la souris prendra cette forme lorsqu'il sera au-dessus de l'élément. Voir le site list of predefined cursor objects pour une gamme de formes utiles.

Un élément de l'éditeur peut vouloir utiliser un curseur en forme de poutre en I :

item->setCursor(Qt::IBeamCursor);

Si aucun curseur n'a été défini, le curseur de l'élément situé en dessous est utilisé.

Voir également setCursor(), hasCursor(), unsetCursor(), QWidget::cursor, et QGuiApplication::overrideCursor().

QVariant QGraphicsItem::data(int key) const

Renvoie les données personnalisées de cet élément pour la clé key sous forme de QVariant.

Les données personnalisées d'un élément sont utiles pour stocker des propriétés arbitraires dans n'importe quel élément. Exemple :

static const int ObjectName = 0;

QGraphicsItem *item = scene.itemAt(100, 50);
if (item->data(ObjectName).toString().isEmpty()) {
    if (qgraphicsitem_cast<ButtonItem *>(item))
        item->setData(ObjectName, "Button");
}

Qt n'utilise pas cette fonctionnalité pour stocker des données ; elle est fournie uniquement pour la commodité de l'utilisateur.

Voir aussi setData().

QTransform QGraphicsItem::deviceTransform(const QTransform &viewportTransform) const

Renvoie la matrice de transformation du périphérique de cet élément, en utilisant viewportTransform pour passer des coordonnées de la scène à celles du périphérique. Cette matrice peut être utilisée pour faire correspondre des coordonnées et des formes géométriques du système de coordonnées local de cet élément au système de coordonnées de la fenêtre de visualisation (ou de n'importe quel périphérique). Pour appliquer les coordonnées de la fenêtre de visualisation, vous devez d'abord inverser la matrice renvoyée.

Exemple :

QGraphicsRectItem rect;
rect.setPos(100, 100);

rect.deviceTransform(view->viewportTransform()).map(QPointF(0, 0));
// returns the item's (0, 0) point in view's viewport coordinates

rect.deviceTransform(view->viewportTransform()).inverted().map(QPointF(100, 100));
// returns view's viewport's (100, 100) coordinate in item coordinates

Cette fonction revient à combiner la transformation de scène de cet élément avec la transformation de la fenêtre de visualisation, mais elle comprend également le drapeau ItemIgnoresTransformations. La transformation de l'appareil peut être utilisée pour effectuer un mappage précis des coordonnées (et une détection des collisions) pour les éléments non transformables.

Voir aussi transform(), setTransform(), scenePos(), Le système de coordonnées de la vue graphique, et itemTransform().

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

Ce gestionnaire d'événement, pour l'événement event, peut être réimplémenté pour recevoir les événements de glisser-déposer pour cet élément. Les événements d'entrée par glissement sont générés lorsque le curseur entre dans la zone de l'élément.

En acceptant l'événement (c'est-à-dire en appelant QEvent::accept()), l'élément acceptera les événements de dépôt, en plus de recevoir les événements de déplacement par glissement et de sortie par glissement. Dans le cas contraire, l'événement est ignoré et se propage à l'élément situé en dessous. Si l'événement est accepté, l'élément recevra un événement de déplacement par glissement avant que le contrôle ne revienne à la boucle d'événements.

Une implémentation courante de dragEnterEvent accepte ou ignore event en fonction des données mime associées dans event. Exemple :

CustomItem::CustomItem()
{
    setAcceptDrops(true);
    ...
}

void CustomItem::dragEnterEvent(QGraphicsSceneDragDropEvent *event)
{
    event->setAccepted(event->mimeData()->hasFormat("text/plain"));
}

Par défaut, les éléments ne reçoivent pas d'événements de glisser-déposer ; pour activer cette fonctionnalité, appelez setAcceptDrops(true).

L'implémentation par défaut ne fait rien.

Voir également dropEvent(), dragMoveEvent() et dragLeaveEvent().

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

Ce gestionnaire d'événement, pour l'événement event, peut être réimplémenté pour recevoir les événements de sortie par glissement pour cet élément. Ces événements sont générés lorsque le curseur quitte la zone de l'élément. Le plus souvent, vous n'aurez pas besoin de réimplémenter cette fonction, mais elle peut être utile pour réinitialiser l'état de votre élément (par exemple, la mise en surbrillance).

Appeler QEvent::ignore() ou QEvent::accept() sur event n'a aucun effet.

Par défaut, les éléments ne reçoivent pas d'événements de glisser-déposer ; pour activer cette fonction, appelez setAcceptDrops(true).

L'implémentation par défaut ne fait rien.

Voir également dragEnterEvent(), dropEvent() et dragMoveEvent().

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

Ce gestionnaire d'événement, pour l'événement event, peut être réimplémenté pour recevoir les événements de déplacement par glissement pour cet élément. Les événements de déplacement par glissement sont générés lorsque le curseur se déplace à l'intérieur de la zone de l'élément. Le plus souvent, vous n'aurez pas besoin de réimplémenter cette fonction ; elle est utilisée pour indiquer que seules certaines parties de l'élément peuvent accepter des déposes.

L'appel à QEvent::ignore() ou QEvent::accept() sur event permet de déterminer si l'élément accepte ou non les chutes à la position de l'événement. Par défaut, event est accepté, ce qui indique que l'élément autorise les chutes à la position spécifiée.

Par défaut, les éléments ne reçoivent pas d'événements de glisser-déposer ; pour activer cette fonctionnalité, appelez setAcceptDrops(true).

L'implémentation par défaut ne fait rien.

Voir également dropEvent(), dragEnterEvent() et dragLeaveEvent().

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

Ce gestionnaire d'événement, pour l'événement event, peut être réimplémenté pour recevoir les événements de chute de cet élément. Les éléments ne peuvent recevoir des événements de dépôt que si le dernier événement de déplacement par glissement a été accepté.

L'appel à QEvent::ignore() ou QEvent::accept() sur event n'a aucun effet.

Par défaut, les éléments ne reçoivent pas d'événements de glisser-déposer ; pour activer cette fonctionnalité, appelez setAcceptDrops(true).

L'implémentation par défaut ne fait rien.

Voir également dragEnterEvent(), dragMoveEvent() et dragLeaveEvent().

qreal QGraphicsItem::effectiveOpacity() const

Renvoie l'opacité effective de cet élément, qui est comprise entre 0,0 (transparent) et 1,0 (opaque). Cette valeur est une combinaison de l'opacité locale de l'élément et des opacités de ses parents et ancêtres. L'opacité effective détermine la manière dont l'élément est rendu.

Voir aussi opacity(), setOpacity(), paint(), ItemIgnoresParentOpacity, et ItemDoesntPropagateOpacityToChildren.

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

Si cet élément fait partie d'une scène visualisée par QGraphicsView, cette fonction de commodité tentera de faire défiler la vue pour s'assurer que rect est visible à l'intérieur de la fenêtre de visualisation de la vue. Si rect est un rectangle nul (par défaut), QGraphicsItem prendra par défaut le rectangle de délimitation de l'élément. xmargin et ymargin sont le nombre de pixels que la vue doit utiliser pour les marges.

Si le rectangle spécifié ne peut être atteint, le contenu est défilé jusqu'à la position valide la plus proche.

Si cet élément n'est pas visualisé par un QGraphicsView, cette fonction ne fait rien.

Voir également QGraphicsView::ensureVisible().

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

Cette fonction de commodité équivaut à appeler ensureVisible(QRectF(x, y, w, h), xmargin, ymargin).

bool QGraphicsItem::filtersChildEvents() const

Renvoie true si cet élément filtre les événements de ses enfants (c'est-à-dire que tous les événements destinés à l'un de ses enfants sont envoyés à cet élément) ; sinon, il renvoie false.

La valeur par défaut est false ; les événements enfants ne sont pas filtrés.

Voir également setFiltersChildEvents().

QGraphicsItem::GraphicsItemFlags QGraphicsItem::flags() const

Renvoie les drapeaux de cet élément. Les drapeaux décrivent les fonctionnalités configurables de l'élément qui sont activées ou non. Par exemple, si les drapeaux incluent ItemIsFocusable, l'élément peut accepter le focus de saisie.

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

Voir également setFlags() et setFlag().

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

Ce gestionnaire d'événement, pour l'événement event, peut être réimplémenté pour recevoir le focus dans les événements pour cet élément. L'implémentation par défaut appelle ensureVisible().

Voir aussi focusOutEvent(), sceneEvent() et setFocus().

QGraphicsItem *QGraphicsItem::focusItem() const

Si cet élément, un enfant ou un descendant de cet élément a actuellement le focus d'entrée, cette fonction renvoie un pointeur sur cet élément. Si aucun descendant n'a le focus d'entrée, nullptr est renvoyé.

Voir également hasFocus(), setFocus() et QWidget::focusWidget().

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

Ce gestionnaire d'événement, pour l'événement event, peut être réimplémenté pour recevoir les événements de focus out pour cet élément. L'implémentation par défaut ne fait rien.

Voir aussi focusInEvent(), sceneEvent() et setFocus().

QGraphicsItem *QGraphicsItem::focusProxy() const

Renvoie le proxy de focus de cet élément, ou nullptr si cet élément n'a pas de proxy de focus.

Voir aussi setFocusProxy(), setFocus() et hasFocus().

void QGraphicsItem::grabKeyboard()

Saisit l'entrée clavier.

L'élément recevra toutes les entrées clavier de la scène jusqu'à ce que l'un des événements suivants se produise :

  • L'élément devient invisible
  • L'élément est retiré de la scène
  • L'élément est supprimé
  • L'élément appelle ungrabKeyboard()
  • Un autre élément appelle grabKeyboard() ; l'élément reprend la main sur le clavier lorsque l'autre élément appelle ungrabKeyboard().

Lorsqu'un élément obtient la saisie du clavier, il reçoit un événement QEvent::GrabKeyboard. Lorsqu'il perd la prise de clavier, il reçoit un événement QEvent::UngrabKeyboard. Ces événements peuvent être utilisés pour détecter si votre élément gagne ou perd l'accès au clavier par d'autres moyens que l'accès au focus d'entrée.

Il n'est presque jamais nécessaire de saisir explicitement le clavier dans Qt, car Qt le saisit et le relâche judicieusement. En particulier, Qt saisit le clavier lorsque votre élément gagne le focus d'entrée, et le relâche lorsque votre élément perd le focus d'entrée, ou lorsque l'élément est caché.

Notez que seuls les éléments visibles peuvent saisir le clavier. Appeler grabKeyboard() sur un élément invisible n'a aucun effet.

Les événements clavier ne sont pas affectés.

Voir aussi ungrabKeyboard(), grabMouse() et setFocus().

void QGraphicsItem::grabMouse()

Saisit l'entrée de la souris.

Cet élément recevra tous les événements de la souris pour la scène jusqu'à ce que l'un des événements suivants se produise :

  • l'élément devient invisible
  • L'élément est retiré de la scène
  • L'élément est supprimé
  • L'élément appelle ungrabMouse()
  • Un autre élément appelle grabMouse() ; l'élément récupère la souris lorsque l'autre élément appelle ungrabMouse().

Lorsqu'un élément récupère la souris, il reçoit un événement QEvent::GrabMouse. Lorsqu'il perd la prise de la souris, il reçoit un événement QEvent::UngrabMouse. Ces événements peuvent être utilisés pour détecter si votre élément obtient ou perd la prise de la souris par d'autres moyens que la réception d'événements liés au bouton de la souris.

Il n'est presque jamais nécessaire d'attraper explicitement la souris dans Qt, car Qt l'attrape et la relâche de manière sensée. En particulier, Qt saisit la souris lorsque vous appuyez sur un bouton de la souris, et maintient la souris saisie jusqu'à ce que vous relâchiez le dernier bouton de la souris. En outre, les widgets Qt::Popup appellent implicitement grabMouse() lorsqu'ils sont affichés et ungrabMouse() lorsqu'ils sont cachés.

Notez que seuls les éléments visibles peuvent saisir la souris. L'appel à grabMouse() sur un élément invisible n'a aucun effet.

Les événements clavier ne sont pas affectés.

Voir aussi QGraphicsScene::mouseGrabberItem(), ungrabMouse() et grabKeyboard().

QGraphicsEffect *QGraphicsItem::graphicsEffect() const

Renvoie un pointeur sur l'effet de cet élément s'il en a un, sinon nullptr.

Voir aussi setGraphicsEffect().

QGraphicsItemGroup *QGraphicsItem::group() const

Renvoie un pointeur sur le groupe d'éléments de cet élément, ou nullptr si cet élément n'est pas membre d'un groupe.

Voir aussi setGroup(), QGraphicsItemGroup, et QGraphicsScene::createItemGroup().

bool QGraphicsItem::hasCursor() const

Renvoie true si cet élément a un curseur défini ; sinon, false est renvoyé.

Par défaut, les éléments n'ont pas de curseur défini. cursor() renvoie un curseur standard avec une flèche pointée.

Voir aussi unsetCursor().

bool QGraphicsItem::hasFocus() const

Renvoie true si l'élément est actif et que l'élément ou son focus proxy est au centre de l'attention du clavier ; sinon, renvoie false.

Voir aussi focusItem(), setFocus(), QGraphicsScene::setFocusItem() et isActive().

void QGraphicsItem::hide()

Cache l'élément (les éléments sont visibles par défaut).

Cette fonction de commodité équivaut à appeler setVisible(false).

Voir aussi show() et setVisible().

[virtual protected] void QGraphicsItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)

Ce gestionnaire d'événement, pour l'événement event, peut être réimplémenté pour recevoir les événements d'entrée au survol pour cet élément. L'implémentation par défaut appelle update() ; sinon, elle ne fait rien.

L'appel à QEvent::ignore() ou QEvent::accept() sur event n'a aucun effet.

Voir également hoverMoveEvent(), hoverLeaveEvent(), sceneEvent() et setAcceptHoverEvents().

[virtual protected] void QGraphicsItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)

Ce gestionnaire d'événement, pour l'événement event, peut être réimplémenté pour recevoir les événements de survol de cet élément. L'implémentation par défaut appelle update() ; sinon, elle ne fait rien.

L'appel à QEvent::ignore() ou QEvent::accept() sur event n'a aucun effet.

Voir également hoverEnterEvent(), hoverMoveEvent(), sceneEvent() et setAcceptHoverEvents().

[virtual protected] void QGraphicsItem::hoverMoveEvent(QGraphicsSceneHoverEvent *event)

Ce gestionnaire d'événement, pour l'événement event, peut être réimplémenté pour recevoir les événements de déplacement en survol de cet élément. L'implémentation par défaut ne fait rien.

L'appel à QEvent::ignore() ou QEvent::accept() sur event n'a aucun effet.

Voir aussi hoverEnterEvent(), hoverLeaveEvent(), sceneEvent() et setAcceptHoverEvents().

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

Ce gestionnaire d'événement, pour l'événement event, peut être réimplémenté pour recevoir les événements de la méthode de saisie pour cet élément. L'implémentation par défaut ignore l'événement.

Voir également inputMethodQuery() et sceneEvent().

Qt::InputMethodHints QGraphicsItem::inputMethodHints() const

Renvoie les indications de la méthode de saisie actuelle de cet élément.

Les indications de méthode de saisie ne sont pertinentes que pour les éléments de saisie. Les indices sont utilisés par la méthode de saisie pour indiquer comment elle doit fonctionner. Par exemple, si le drapeau Qt::ImhNumbersOnly est activé, la méthode de saisie peut modifier ses composants visuels pour indiquer que seuls des nombres peuvent être saisis.

L'effet peut varier d'une implémentation de la méthode de saisie à l'autre.

Voir également setInputMethodHints() et inputMethodQuery().

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

Cette méthode ne concerne que les éléments de saisie. Elle est utilisée par la méthode de saisie pour interroger un ensemble de propriétés de l'élément afin de pouvoir prendre en charge des opérations complexes de la méthode de saisie, telles que la prise en charge du texte environnant et des reconversions. query précise quelle propriété est interrogée.

Voir également inputMethodEvent() et QInputMethodEvent.

void QGraphicsItem::installSceneEventFilter(QGraphicsItem *filterItem)

Installe un filtre d'événements pour cet élément sur filterItem, de sorte que tous les événements de cet élément passent d'abord par la fonction sceneEventFilter() de filterItem.

Pour filtrer les événements d'un autre élément, installez cet élément comme filtre d'événement pour l'autre élément. Exemple :

QGraphicsScene scene;
QGraphicsEllipseItem *ellipse = scene.addEllipse(QRectF(-10, -10, 20, 20));
QGraphicsLineItem *line = scene.addLine(QLineF(-10, -10, 20, 20));

line->installSceneEventFilter(ellipse);
// line's events are filtered by ellipse's sceneEventFilter() function.

ellipse->installSceneEventFilter(line);
// ellipse's events are filtered by line's sceneEventFilter() function.

Un élément ne peut filtrer que les événements des autres éléments de la même scène. De même, un élément ne peut pas filtrer ses propres événements ; à la place, vous pouvez réimplémenter directement la fonction sceneEvent().

Les éléments doivent appartenir à une scène pour que les filtres d'événements de la scène puissent être installés et utilisés.

Voir également removeSceneEventFilter(), sceneEventFilter() et sceneEvent().

bool QGraphicsItem::isActive() const

Renvoie true si cet élément est actif ; sinon, renvoie false.

Un élément ne peut être actif que si la scène est active. Un élément est actif s'il s'agit d'un panneau actif ou d'un descendant d'un panneau actif. Les éléments des panneaux non actifs ne sont pas actifs.

Les éléments qui ne font pas partie d'un panneau suivent l'activation de la scène lorsque celle-ci n'a pas de panneau actif.

Seuls les éléments actifs peuvent obtenir le focus d'entrée.

Voir également QGraphicsScene::isActive(), QGraphicsScene::activePanel(), panel() et isPanel().

bool QGraphicsItem::isAncestorOf(const QGraphicsItem *child) const

Renvoie true si cet élément est un ancêtre de child (c'est-à-dire si cet élément est le parent de child ou l'un des ancêtres du parent de child).

Voir aussi parentItem().

bool QGraphicsItem::isBlockedByModalPanel(QGraphicsItem **blockingPanel = nullptr) const

Renvoie true si cet élément est bloqué par un panneau modal, false sinon. Si blockingPanel est différent de zéro, blockingPanel sera défini sur le panneau modal qui bloque cet élément. Si cet élément n'est pas bloqué, blockingPanel ne sera pas défini par cette fonction.

Cette fonction renvoie toujours false pour les éléments qui ne font pas partie d'une scène.

Voir également panelModality(), setPanelModality() et PanelModality.

bool QGraphicsItem::isClipped() const

Renvoie true si cet élément est coupé. Un élément est coupé s'il a activé l'indicateur ItemClipsToShape ou si l'un de ses ancêtres a activé l'indicateur ItemClipsChildrenToShape.

L'écrêtage affecte l'apparence de l'élément (c.-à-d. la peinture), ainsi que les événements liés à la souris et au survol.

Voir également clipPath(), shape() et setFlags().

bool QGraphicsItem::isEnabled() const

Renvoie true si l'élément est activé ; sinon, il renvoie false.

Voir également setEnabled().

bool QGraphicsItem::isObscured(const QRectF &rect = QRectF()) const

Renvoie true si rect est complètement masqué par la forme opaque de l'un des éléments entrant en collision au-dessus de lui (c'est-à-dire dont la valeur Z est supérieure à celle de cet élément).

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

Voir aussi opaqueArea().

bool QGraphicsItem::isObscured(qreal x, qreal y, qreal w, qreal h) const

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

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

[virtual] bool QGraphicsItem::isObscuredBy(const QGraphicsItem *item) const

Renvoie true si le rectangle de délimitation de cet élément est complètement masqué par la forme opaque de item.

L'implémentation de base fait correspondre la forme opaqueArea() de item au système de coordonnées de cet élément, puis vérifie si la forme boundingRect() de cet élément est entièrement contenue dans la forme mise en correspondance.

Vous pouvez réimplémenter cette fonction pour fournir un algorithme personnalisé permettant de déterminer si cet élément est masqué par item.

Voir également opaqueArea() et isObscured().

bool QGraphicsItem::isPanel() const

Renvoie true si l'élément est un panneau ; sinon, renvoie false.

Voir également QGraphicsItem::panel() et ItemIsPanel.

bool QGraphicsItem::isSelected() const

Renvoie true si cet élément est sélectionné ; sinon, il renvoie false.

Les éléments qui font partie d'un groupe héritent de l'état sélectionné du groupe.

Les éléments ne sont pas sélectionnés par défaut.

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

bool QGraphicsItem::isUnderMouse() const

Renvoie true si cet élément se trouve actuellement sous le curseur de la souris dans l'une des vues ; sinon, il renvoie false.

Voir également QGraphicsScene::views() et QCursor::pos().

bool QGraphicsItem::isVisible() const

Renvoie true si l'élément est visible ; sinon, il renvoie false.

Notez que la visibilité générale de l'élément n'est pas liée au fait qu'il soit ou non visualisé par QGraphicsView.

Voir également setVisible().

bool QGraphicsItem::isVisibleTo(const QGraphicsItem *parent) const

Renvoie true si l'élément est visible par parent; sinon, elle renvoie false. parent peut être nullptr, auquel cas cette fonction renvoie si l'élément est visible par la scène ou non.

Un élément peut ne pas être visible par ses ancêtres même si isVisible() est vrai. Il peut également être visible pour ses ancêtres même si isVisible() est faux. Si un ancêtre est caché, l'élément lui-même sera implicitement caché, auquel cas cette fonction renverra false.

Voir également isVisible() et setVisible().

bool QGraphicsItem::isWidget() const

Renvoie true si cet élément est un widget (c'est-à-dire QGraphicsWidget) ; sinon, renvoie false.

bool QGraphicsItem::isWindow() const

Renvoie true si l'élément est une fenêtre QGraphicsWidget, sinon renvoie false.

Voir aussi QGraphicsWidget::windowFlags().

[virtual protected] QVariant QGraphicsItem::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)

Cette fonction virtuelle est appelée par QGraphicsItem pour notifier aux éléments personnalisés qu'une partie de l'état de l'élément change. En réimplémentant cette fonction, vous pouvez réagir à un changement et, dans certains cas (en fonction de change), des ajustements peuvent être effectués.

change est le paramètre de l'élément qui change. value est la nouvelle valeur ; le type de la valeur dépend de change.

Exemple :

QVariant Component::itemChange(GraphicsItemChange change, const QVariant &value)
{
    if (change == ItemPositionChange && scene()) {
        // value is the new position.
        QPointF newPos = value.toPointF();
        QRectF rect = scene()->sceneRect();
        if (!rect.contains(newPos)) {
            // Keep the item inside the scene rect.
            newPos.setX(qMin(rect.right(), qMax(newPos.x(), rect.left())));
            newPos.setY(qMin(rect.bottom(), qMax(newPos.y(), rect.top())));
            return newPos;
        }
    }
    return QGraphicsItem::itemChange(change, value);
}

L'implémentation par défaut ne fait rien et renvoie value.

Remarque : certaines fonctions QGraphicsItem ne peuvent pas être appelées dans une réimplémentation de cette fonction ; voir la documentation GraphicsItemChange pour plus de détails.

Voir aussi GraphicsItemChange.

QTransform QGraphicsItem::itemTransform(const QGraphicsItem *other, bool *ok = nullptr) const

Renvoie un QTransform qui fait correspondre les coordonnées de cet élément à other. Si ok n'est pas nul, et s'il n'existe pas de transformation de ce type, le booléen pointé par ok sera mis à faux ; sinon, il sera mis à vrai.

Cette transformation constitue une alternative aux fonctions mapToItem() ou mapFromItem(), en renvoyant la transformation appropriée afin que vous puissiez mapper vous-même les formes et les coordonnées. Elle vous permet également d'écrire un code plus efficace lorsque vous mettez en correspondance plusieurs fois les deux mêmes éléments.

Remarque : dans de rares cas, il n'existe pas de transformation permettant d'établir une correspondance entre deux éléments.

Voir aussi mapToItem(), mapFromItem() et deviceTransform().

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

Ce gestionnaire d'événement, pour l'événement event, peut être réimplémenté pour recevoir les événements d'appui sur une touche pour cet élément. L'implémentation par défaut ignore l'événement. Si vous réimplémentez ce gestionnaire, l'événement sera accepté par défaut.

Notez que les événements liés aux touches ne sont reçus que pour les éléments pour lesquels l'indicateur ItemIsFocusable a été activé et pour lesquels l'attention est portée sur la saisie au clavier.

Voir aussi keyReleaseEvent(), setFocus(), QGraphicsScene::setFocusItem() et sceneEvent().

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

Ce gestionnaire d'événement, pour l'événement event, peut être réimplémenté pour recevoir les événements de déblocage des touches pour cet élément. L'implémentation par défaut ignore l'événement. Si vous réimplémentez ce gestionnaire, l'événement sera accepté par défaut.

Notez que les événements liés aux touches ne sont reçus que pour les éléments pour lesquels l'indicateur ItemIsFocusable a été activé et pour lesquels la saisie au clavier est privilégiée.

Voir aussi keyPressEvent(), setFocus(), QGraphicsScene::setFocusItem() et sceneEvent().

QPainterPath QGraphicsItem::mapFromItem(const QGraphicsItem *item, const QPainterPath &path) const

Transpose le chemin path, qui se trouve dans le système de coordonnées de item, dans le système de coordonnées de cet élément, et renvoie le chemin transposé.

Si item est nullptr, cette fonction renvoie la même chose que mapFromScene().

Voir également itemTransform(), mapFromParent(), mapFromScene(), mapToItem() et Le système de coordonnées de la vue graphique.

QPointF QGraphicsItem::mapFromItem(const QGraphicsItem *item, const QPointF &point) const

Transpose le point point, qui se trouve dans le système de coordonnées de item, dans le système de coordonnées de cet élément, et renvoie la coordonnée transposée.

Si item est nullptr, cette fonction renvoie la même chose que mapFromScene().

Voir également itemTransform(), mapFromParent(), mapFromScene(), transform(), mapToItem() et Le système de coordonnées de la vue graphique.

QPolygonF QGraphicsItem::mapFromItem(const QGraphicsItem *item, const QPolygonF &polygon) const

Met en correspondance le polygone polygon, qui se trouve dans le système de coordonnées de item, avec le système de coordonnées de cet élément, et renvoie le polygone mis en correspondance.

Si item est nullptr, cette fonction renvoie la même chose que mapFromScene().

Voir également itemTransform(), mapToItem(), mapFromParent(), transform() et Le système de coordonnées de la vue graphique.

QPolygonF QGraphicsItem::mapFromItem(const QGraphicsItem *item, const QRectF &rect) const

Transpose le rectangle rect, qui se trouve dans le système de coordonnées de item, dans le système de coordonnées de cet élément, et renvoie le rectangle transposé sous la forme d'un polygone.

Si item est nullptr, cette fonction renvoie la même chose que mapFromScene().

Voir également itemTransform(), mapToItem(), mapFromParent(), transform() et Le système de coordonnées de la vue graphique.

QPolygonF QGraphicsItem::mapFromItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const

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

QPointF QGraphicsItem::mapFromItem(const QGraphicsItem *item, qreal x, qreal y) const

Cette fonction de commodité équivaut à appeler mapFromItem(item, QPointF(x, y)).

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

QPainterPath QGraphicsItem::mapFromParent(const QPainterPath &path) const

Transpose le chemin path, qui se trouve dans le système de coordonnées du parent de cet élément, dans le système de coordonnées de cet élément, et renvoie le chemin transposé.

Voir également mapFromScene(), mapFromItem(), mapToParent() et Le système de coordonnées de la vue graphique.

QPointF QGraphicsItem::mapFromParent(const QPointF &point) const

Mapper le point point, qui se trouve dans le système de coordonnées du parent de cet élément, dans le système de coordonnées de cet élément, et renvoyer la coordonnée mappée.

Voir aussi mapFromItem(), mapFromScene(), transform(), mapToParent() et Le système de coordonnées de la vue graphique.

QPolygonF QGraphicsItem::mapFromParent(const QPolygonF &polygon) const

Mappe le polygone polygon, qui se trouve dans le système de coordonnées du parent de cet élément, au système de coordonnées de cet élément, et renvoie le polygone mappé.

Voir aussi mapToParent(), mapToItem(), transform(), et Le système de coordonnées de la vue graphique.

QPolygonF QGraphicsItem::mapFromParent(const QRectF &rect) const

Mappe le rectangle rect, qui se trouve dans le système de coordonnées du parent de cet élément, au système de coordonnées de cet élément, et renvoie le rectangle mappé sous la forme d'un polygone.

Voir aussi mapToParent(), mapFromItem(), transform(), et Le système de coordonnées de la vue graphique.

QPolygonF QGraphicsItem::mapFromParent(qreal x, qreal y, qreal w, qreal h) const

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

QPointF QGraphicsItem::mapFromParent(qreal x, qreal y) const

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

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

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

Transpose le chemin path, qui se trouve dans le système de coordonnées de la scène de cet élément, dans le système de coordonnées de cet élément, et renvoie le chemin transposé.

Voir également mapFromParent(), mapFromItem(), mapToScene() et Le système de coordonnées de la vue graphique.

QPointF QGraphicsItem::mapFromScene(const QPointF &point) const

Met en correspondance le point point, qui se trouve dans le système de coordonnées de la scène de cet élément, avec le système de coordonnées de cet élément, et renvoie la coordonnée mise en correspondance.

Voir également mapFromItem(), mapFromParent(), transform(), mapToScene() et Le système de coordonnées de la vue graphique.

QPolygonF QGraphicsItem::mapFromScene(const QPolygonF &polygon) const

Mappe le polygone polygon, qui se trouve dans le système de coordonnées de la scène de cet élément, dans le système de coordonnées de cet élément, et renvoie le polygone mappé.

Voir aussi mapToScene(), mapFromParent(), transform(), et Le système de coordonnées de la vue graphique.

QPolygonF QGraphicsItem::mapFromScene(const QRectF &rect) const

Mappe le rectangle rect, qui se trouve dans le système de coordonnées de la scène de cet élément, au système de coordonnées de cet élément, et renvoie le rectangle mappé sous la forme d'un polygone.

Voir aussi mapToScene(), mapFromItem(), transform(), et Le système de coordonnées de la vue graphique.

QPolygonF QGraphicsItem::mapFromScene(qreal x, qreal y, qreal w, qreal h) const

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

QPointF QGraphicsItem::mapFromScene(qreal x, qreal y) const

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

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

QRectF QGraphicsItem::mapRectFromItem(const QGraphicsItem *item, const QRectF &rect) const

Transpose le rectangle rect, qui se trouve dans le système de coordonnées de item, dans le système de coordonnées de cet élément, et renvoie le rectangle transposé en tant que nouveau rectangle (c'est-à-dire le rectangle de délimitation du polygone résultant).

Si item est nullptr, cette fonction renvoie la même chose que mapRectFromScene().

Voir également itemTransform(), mapToParent(), mapToScene(), mapFromItem() et Le système de coordonnées de la vue graphique.

QRectF QGraphicsItem::mapRectFromItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const

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

QRectF QGraphicsItem::mapRectFromParent(const QRectF &rect) const

Transpose le rectangle rect, qui se trouve dans le système de coordonnées du parent de cet élément, dans le système de coordonnées de cet élément, et renvoie le rectangle transposé sous la forme d'un nouveau rectangle (c'est-à-dire le rectangle de délimitation du polygone résultant).

Voir aussi itemTransform(), mapToParent(), mapToScene(), mapFromItem(), et Le système de coordonnées de la vue graphique.

QRectF QGraphicsItem::mapRectFromParent(qreal x, qreal y, qreal w, qreal h) const

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

QRectF QGraphicsItem::mapRectFromScene(const QRectF &rect) const

Mappe le rectangle rect, qui est en coordonnées de scène, au système de coordonnées de cet élément, et renvoie le rectangle mappé en tant que nouveau rectangle (c'est-à-dire le rectangle de délimitation du polygone résultant).

Voir également itemTransform(), mapToParent(), mapToScene(), mapFromItem() et Le système de coordonnées de la vue graphique.

QRectF QGraphicsItem::mapRectFromScene(qreal x, qreal y, qreal w, qreal h) const

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

QRectF QGraphicsItem::mapRectToItem(const QGraphicsItem *item, const QRectF &rect) const

Transpose le rectangle rect, qui se trouve dans le système de coordonnées de cet élément, dans le système de coordonnées de item, et renvoie le rectangle transposé en tant que nouveau rectangle (c'est-à-dire le rectangle de délimitation du polygone résultant).

Si item est nullptr, cette fonction renvoie la même chose que mapRectToScene().

Voir également itemTransform(), mapToParent(), mapToScene(), mapFromItem() et Le système de coordonnées de la vue graphique.

QRectF QGraphicsItem::mapRectToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const

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

QRectF QGraphicsItem::mapRectToParent(const QRectF &rect) const

Transpose le rectangle rect, qui se trouve dans le système de coordonnées de cet élément, dans le système de coordonnées de son parent, et renvoie le rectangle transposé sous la forme d'un nouveau rectangle (c'est-à-dire le rectangle de délimitation du polygone résultant).

Voir également itemTransform(), mapToParent(), mapToScene(), mapFromItem() et Le système de coordonnées de la vue graphique.

QRectF QGraphicsItem::mapRectToParent(qreal x, qreal y, qreal w, qreal h) const

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

QRectF QGraphicsItem::mapRectToScene(const QRectF &rect) const

Mappe le rectangle rect, qui se trouve dans le système de coordonnées de cet élément, au système de coordonnées de la scène, et renvoie le rectangle mappé sous la forme d'un nouveau rectangle (c'est-à-dire le rectangle de délimitation du polygone résultant).

Voir également itemTransform(), mapToParent(), mapToScene(), mapFromItem() et Le système de coordonnées de la vue graphique.

QRectF QGraphicsItem::mapRectToScene(qreal x, qreal y, qreal w, qreal h) const

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

QPainterPath QGraphicsItem::mapToItem(const QGraphicsItem *item, const QPainterPath &path) const

Transpose le chemin path, qui se trouve dans le système de coordonnées de cet élément, dans le système de coordonnées de item, et renvoie le chemin transposé.

Si item est nullptr, cette fonction renvoie la même chose que mapToScene().

Voir également itemTransform(), mapToParent(), mapToScene(), mapFromItem() et Le système de coordonnées de la vue graphique.

QPointF QGraphicsItem::mapToItem(const QGraphicsItem *item, const QPointF &point) const

Transpose le point point, qui se trouve dans le système de coordonnées de cet élément, dans le système de coordonnées de item, et renvoie la coordonnée transposée.

Si item est nullptr, cette fonction renvoie la même chose que mapToScene().

Voir également itemTransform(), mapToParent(), mapToScene(), transform(), mapFromItem() et Le système de coordonnées de la vue graphique.

QPolygonF QGraphicsItem::mapToItem(const QGraphicsItem *item, const QPolygonF &polygon) const

Transpose le polygone polygon, qui se trouve dans le système de coordonnées de cet élément, dans le système de coordonnées de item, et renvoie le polygone transposé.

Si item est nullptr, cette fonction renvoie la même chose que mapToScene().

Voir également itemTransform(), mapToParent(), mapToScene(), mapFromItem() et Le système de coordonnées de la vue graphique.

QPolygonF QGraphicsItem::mapToItem(const QGraphicsItem *item, const QRectF &rect) const

Transpose le rectangle rect, qui se trouve dans le système de coordonnées de cet élément, dans le système de coordonnées de item, et renvoie le rectangle transposé sous la forme d'un polygone.

Si item est nullptr, cette fonction renvoie la même chose que mapToScene().

Voir aussi itemTransform(), mapToParent(), mapToScene(), mapFromItem(), et Le système de coordonnées de la vue graphique.

QPolygonF QGraphicsItem::mapToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const

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

QPointF QGraphicsItem::mapToItem(const QGraphicsItem *item, qreal x, qreal y) const

Cette fonction de commodité équivaut à appeler mapToItem(item, QPointF(x, y)).

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

QPainterPath QGraphicsItem::mapToParent(const QPainterPath &path) const

Mappe le chemin path, qui se trouve dans le système de coordonnées de cet élément, au système de coordonnées de son parent, et renvoie le chemin mappé. Si l'élément n'a pas de parent, path sera mappé dans le système de coordonnées de la scène.

Voir également mapToScene(), mapToItem(), mapFromParent() et Le système de coordonnées de la vue graphique.

QPointF QGraphicsItem::mapToParent(const QPointF &point) const

Mapper le point point, qui se trouve dans le système de coordonnées de cet élément, au système de coordonnées de son parent, et renvoyer la coordonnée mappée. Si l'élément n'a pas de parent, point sera mappé dans le système de coordonnées de la scène.

Voir également mapToItem(), mapToScene(), transform(), mapFromParent() et Le système de coordonnées de la vue graphique.

QPolygonF QGraphicsItem::mapToParent(const QPolygonF &polygon) const

Mappe le polygone polygon, qui se trouve dans le système de coordonnées de cet élément, dans le système de coordonnées de son parent, et renvoie le polygone mappé. Si l'élément n'a pas de parent, polygon sera mappé dans le système de coordonnées de la scène.

Voir aussi mapToScene(), mapToItem(), mapFromParent(), et Le système de coordonnées de la vue graphique.

QPolygonF QGraphicsItem::mapToParent(const QRectF &rect) const

Transpose le rectangle rect, qui se trouve dans le système de coordonnées de cet élément, dans le système de coordonnées de son parent, et renvoie le rectangle transposé sous la forme d'un polygone. Si l'élément n'a pas de parent, rect sera mappé dans le système de coordonnées de la scène.

Voir également mapToScene(), mapToItem(), mapFromParent() et Le système de coordonnées de la vue graphique.

QPolygonF QGraphicsItem::mapToParent(qreal x, qreal y, qreal w, qreal h) const

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

QPointF QGraphicsItem::mapToParent(qreal x, qreal y) const

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

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

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

Transpose le chemin path, qui se trouve dans le système de coordonnées de cet élément, dans le système de coordonnées de la scène, et renvoie le chemin transposé.

Voir également mapToParent(), mapToItem(), mapFromScene() et Le système de coordonnées de la vue graphique.

QPointF QGraphicsItem::mapToScene(const QPointF &point) const

Met en correspondance le point point, qui se trouve dans le système de coordonnées de cet élément, avec le système de coordonnées de la scène, et renvoie la coordonnée mise en correspondance.

Voir également mapToItem(), mapToParent(), transform(), mapFromScene() et Le système de coordonnées de la vue graphique.

QPolygonF QGraphicsItem::mapToScene(const QPolygonF &polygon) const

Met en correspondance le polygone polygon, qui se trouve dans le système de coordonnées de cet élément, avec le système de coordonnées de la scène, et renvoie le polygone mis en correspondance.

Voir aussi mapToParent(), mapToItem(), mapFromScene(), et Le système de coordonnées de la vue graphique.

QPolygonF QGraphicsItem::mapToScene(const QRectF &rect) const

Mappe le rectangle rect, qui se trouve dans le système de coordonnées de cet élément, au système de coordonnées de la scène, et renvoie le rectangle mappé sous la forme d'un polygone.

Voir également mapToParent(), mapToItem(), mapFromScene() et Le système de coordonnées de la vue graphique.

QPolygonF QGraphicsItem::mapToScene(qreal x, qreal y, qreal w, qreal h) const

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

QPointF QGraphicsItem::mapToScene(qreal x, qreal y) const

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

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

[virtual protected] void QGraphicsItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)

Ce gestionnaire d'événement, pour l'événement event, peut être réimplémenté pour recevoir les événements de double-clic de la souris pour cet élément.

Lorsqu'on double-clique sur un élément, celui-ci reçoit 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.

L'appel de QEvent::ignore() ou de QEvent::accept() sur event n'a aucun effet.

L'implémentation par défaut appelle mousePressEvent(). Si vous souhaitez conserver l'implémentation de base lorsque vous réimplémentez cette fonction, appelez QGraphicsItem::mouseDoubleClickEvent() dans votre réimplémentation.

Notez qu'un élément ne recevra pas d'événements de double clic s'il n'est ni selectable ni movable (les simples clics de souris sont ignorés dans ce cas, ce qui empêche la génération de doubles clics).

Voir aussi mousePressEvent(), mouseMoveEvent(), mouseReleaseEvent() et sceneEvent().

[virtual protected] void QGraphicsItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)

Ce gestionnaire d'événement, pour l'événement event, peut être réimplémenté pour recevoir les événements de déplacement de la souris pour cet élément. Si vous recevez cet événement, vous pouvez être certain que cet élément a également reçu un événement de pression de la souris et qu'il est le capteur de souris actuel.

Appeler QEvent::ignore() ou QEvent::accept() sur event n'a aucun effet.

L'implémentation par défaut gère les interactions de base avec les éléments, telles que la sélection et le déplacement. Si vous souhaitez conserver l'implémentation de base lorsque vous réimplémentez cette fonction, appelez QGraphicsItem::mouseMoveEvent() dans votre réimplémentation.

Veuillez noter que mousePressEvent() détermine l'élément graphique qui reçoit les événements de la souris. Voir la description de mousePressEvent() pour plus de détails.

Voir aussi mousePressEvent(), mouseReleaseEvent(), mouseDoubleClickEvent(), et sceneEvent().

[virtual protected] void QGraphicsItem::mousePressEvent(QGraphicsSceneMouseEvent *event)

Ce gestionnaire d'événement, pour l'événement event, peut être réimplémenté pour recevoir les événements de pression de la souris pour cet élément. Les événements de pression de la souris ne sont délivrés qu'aux éléments qui acceptent le bouton de la souris pressé. Par défaut, un élément accepte tous les boutons de la souris, mais vous pouvez changer cela en appelant setAcceptedMouseButtons().

L'événement de pression de la souris détermine l'élément qui doit devenir le capteur de souris (voir QGraphicsScene::mouseGrabberItem()). Si vous ne réimplémentez pas cette fonction, l'événement d'appui se propagera à tout élément supérieur situé sous cet élément, et aucun autre événement de souris ne sera transmis à cet élément.

Si vous réimplémentez cette fonction, event sera accepté par défaut (voir QEvent::accept()), et cet élément sera alors le capteur de souris. Cela permet à l'élément de recevoir les futurs événements de déplacement, de relâchement et de double-clic. Si vous appelez QEvent::ignore() sur event, cet élément perdra la prise de la souris et event se propagera à tout élément supérieur situé en dessous. Aucun autre événement de souris ne sera transmis à cet élément, à moins qu'un nouvel événement de pression de la souris ne soit reçu.

L'implémentation par défaut gère les interactions de base avec les éléments, telles que la sélection et le déplacement. Si vous souhaitez conserver l'implémentation de base lorsque vous réimplémentez cette fonction, appelez QGraphicsItem::mousePressEvent() dans votre réimplémentation.

L'événement est QEvent::ignore()d pour les éléments qui ne sont ni movable ni selectable.

Voir également mouseMoveEvent(), mouseReleaseEvent(), mouseDoubleClickEvent() et sceneEvent().

[virtual protected] void QGraphicsItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)

Ce gestionnaire d'événement, pour l'événement event, peut être réimplémenté pour recevoir les événements de relâchement de la souris pour cet élément.

L'appel à QEvent::ignore() ou QEvent::accept() sur event n'a aucun effet.

L'implémentation par défaut gère les interactions de base avec les éléments, telles que la sélection et le déplacement. Si vous souhaitez conserver l'implémentation de base lorsque vous réimplémentez cette fonction, appelez QGraphicsItem::mouseReleaseEvent() dans votre réimplémentation.

Veuillez noter que mousePressEvent() détermine l'élément graphique qui reçoit les événements de la souris. Voir la description de mousePressEvent() pour plus de détails.

Voir aussi mousePressEvent(), mouseMoveEvent(), mouseDoubleClickEvent() et sceneEvent().

void QGraphicsItem::moveBy(qreal dx, qreal dy)

Déplace l'élément de dx points horizontalement et de dy points verticalement. Cette fonction équivaut à appeler setPos(pos() + QPointF(dx, dy)).

qreal QGraphicsItem::opacity() const

Renvoie l'opacité locale de cet élément, qui est comprise entre 0,0 (transparent) et 1,0 (opaque). Cette valeur est combinée avec les valeurs du parent et de l'ancêtre dans effectiveOpacity(). L'opacité effective détermine la manière dont l'élément est rendu et affecte également sa visibilité lorsqu'il est interrogé par des fonctions telles que QGraphicsView::items().

La propriété d'opacité détermine l'état du peintre transmis à la fonction paint(). Si l'élément est mis en cache, c'est-à-dire ItemCoordinateCache ou DeviceCoordinateCache, la propriété effective sera appliquée au cache de l'élément lors de son rendu.

L'opacité par défaut est de 1,0, c'est-à-dire qu'elle est totalement opaque.

Voir également setOpacity(), paint(), ItemIgnoresParentOpacity, et ItemDoesntPropagateOpacityToChildren.

[virtual] QPainterPath QGraphicsItem::opaqueArea() const

Cette fonction virtuelle renvoie une forme représentant la zone où cet élément est opaque. Une zone est opaque si elle est remplie à l'aide d'un pinceau ou d'une couleur opaque (c'est-à-dire qu'elle n'est pas transparente).

Cette fonction est utilisée par isObscuredBy(), qui est appelée par les éléments sous-jacents pour déterminer s'ils sont masqués par cet élément.

L'implémentation par défaut renvoie une valeur vide QPainterPath, indiquant que cet élément est totalement transparent et ne masque aucun autre élément.

Voir également isObscuredBy(), isObscured() et shape().

[pure virtual] void QGraphicsItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr)

Cette fonction, qui est généralement appelée par QGraphicsView, peint le contenu d'un élément en coordonnées locales.

Réimplémentez cette fonction dans une sous-classe de QGraphicsItem pour fournir l'implémentation de la peinture de l'élément, en utilisant painter. Le paramètre option fournit des options de style pour l'élément, telles que son état, sa zone exposée et ses indices de niveau de détail. L'argument widget est facultatif. S'il est fourni, il pointe vers le widget sur lequel la peinture est appliquée ; sinon, il vaut 0. Pour la peinture en cache, widget vaut toujours 0.

void RoundRectItem::paint(QPainter *painter,
                          const QStyleOptionGraphicsItem *option,
                          QWidget *widget)
{
    painter->drawRoundedRect(-10, -10, 20, 20, 5, 5);
}

Le stylo du peintre a une largeur de 0 par défaut, et son stylo est initialisé à la brosse QPalette::Text de la palette du dispositif de peinture. La brosse est initialisée à QPalette::Window.

Veillez à limiter toute peinture à l'intérieur des limites de boundingRect() pour éviter les artefacts de rendu (car QGraphicsView n'écrête pas le peintre pour vous). En particulier, lorsque QPainter rend le contour d'une forme en utilisant un QPen assigné, la moitié du contour sera dessinée à l'extérieur et l'autre moitié à l'intérieur de la forme que vous rendez (par exemple, avec une largeur de stylo de 2 unités, vous devez dessiner des contours d'une unité à l'intérieur de boundingRect()). QGraphicsItem ne prend pas en charge l'utilisation de stylos cosmétiques d'une largeur non nulle.

Toutes les peintures sont réalisées en coordonnées locales.

Remarque : il est obligatoire qu'un élément se redessine toujours de la même manière, à moins que update() n'ait été appelé ; dans le cas contraire, des artefacts visuels peuvent se produire. En d'autres termes, deux appels ultérieurs à paint() doivent toujours produire le même résultat, à moins que update() n'ait été appelé entre les deux.

Remarque : l'activation de la mise en cache d'un élément ne garantit pas que paint() ne sera invoqué qu'une seule fois par le cadre de travail Graphics View, même sans appel explicite à update(). Voir la documentation de setCacheMode() pour plus de détails.

Voir aussi setCacheMode(), QPen::width(), Item Coordinates, et ItemUsesExtendedStyleOption.

QGraphicsItem *QGraphicsItem::panel() const

Renvoie le panneau de l'élément, ou nullptr si l'élément n'a pas de panneau. Si l'élément est un panneau, il se renvoie lui-même. Sinon, il renverra l'ancêtre le plus proche qui est un panneau.

Voir aussi isPanel() et ItemIsPanel.

QGraphicsItem::PanelModality QGraphicsItem::panelModality() const

Renvoie la modalité de cet élément.

Voir aussi setPanelModality().

QGraphicsItem *QGraphicsItem::parentItem() const

Renvoie un pointeur sur l'élément parent de cet élément. Si cet élément n'a pas de parent, nullptr est renvoyé.

Voir aussi setParentItem() et childItems().

QGraphicsObject *QGraphicsItem::parentObject() const

Renvoie un pointeur sur le parent de l'élément, converti en QGraphicsObject. Renvoie nullptr si l'élément parent n'est pas un QGraphicsObject.

Voir aussi parentItem() et childItems().

QGraphicsWidget *QGraphicsItem::parentWidget() const

Renvoie un pointeur sur le widget parent de l'élément. Le widget parent de l'élément est l'élément parent le plus proche qui est un widget.

Voir aussi parentItem() et childItems().

QPointF QGraphicsItem::pos() const

Renvoie la position de l'élément en coordonnées parentales. Si l'élément n'a pas de parent, sa position est donnée en coordonnées de scène.

La position de l'élément décrit son origine (coordonnée locale (0, 0)) dans les coordonnées du parent ; cette fonction renvoie la même chose que mapToParent(0, 0).

Par commodité, vous pouvez également appeler scenePos() pour déterminer la position de l'élément dans les coordonnées de la scène, quel que soit son parent.

Voir également x(), y(), setPos(), transform() et Le système de coordonnées de la vue graphique.

[protected] void QGraphicsItem::prepareGeometryChange()

Prépare l'élément à un changement de géométrie. Appelez cette fonction avant de modifier le rectangle de délimitation d'un élément pour que l'index de QGraphicsScene soit à jour.

La fonction prepareGeometryChange() appellera update() si cela est nécessaire.

Exemple :

void CircleItem::setRadius(qreal newRadius)
{
    if (radius != newRadius) {
        prepareGeometryChange();
        radius = newRadius;
    }
}

Voir également boundingRect().

void QGraphicsItem::removeSceneEventFilter(QGraphicsItem *filterItem)

Supprime un filtre d'événement sur cet élément à partir de filterItem.

Voir aussi installSceneEventFilter().

void QGraphicsItem::resetTransform()

Réinitialise la matrice de transformation de cet élément à la matrice d'identité ou toutes les propriétés de transformation à leurs valeurs par défaut. Cela équivaut à appeler setTransform(QTransform()).

Voir également setTransform() et transform().

qreal QGraphicsItem::rotation() const

Renvoie la rotation dans le sens des aiguilles d'une montre, en degrés, autour de l'axe Z. La valeur par défaut est 0 (c'est-à-dire que l'élément n'est pas tourné).

La rotation est combinée avec les fonctions scale(), transform() et transformations() de l'élément pour faire correspondre le système de coordonnées de l'élément à celui de l'élément parent.

Voir également setRotation(), transformOriginPoint() et Transformations.

qreal QGraphicsItem::scale() const

Renvoie le facteur d'échelle de l'élément. Le facteur d'échelle par défaut est de 1,0 (c'est-à-dire que l'élément n'est pas mis à l'échelle).

L'échelle est combinée avec les facteurs rotation(), transform() et transformations() de l'élément pour faire correspondre le système de coordonnées de l'élément à l'élément parent.

Voir également setScale(), rotation() et Transformations.

QGraphicsScene *QGraphicsItem::scene() const

Renvoie la scène actuelle de l'élément ou nullptr si l'élément n'est pas stocké dans une scène.

Pour ajouter ou déplacer un élément dans une scène, appelez QGraphicsScene::addItem().

QRectF QGraphicsItem::sceneBoundingRect() const

Renvoie le rectangle de délimitation de cet élément en coordonnées de scène, en combinant sceneTransform() et boundingRect().

Voir également boundingRect() et Le système de coordonnées de la vue graphique.

[virtual protected] bool QGraphicsItem::sceneEvent(QEvent *event)

Cette fonction virtuelle reçoit les événements relatifs à cet élément. Réimplémentez cette fonction pour intercepter les événements avant qu'ils ne soient envoyés aux gestionnaires d'événements spécialisés contextMenuEvent(), focusInEvent(), focusOutEvent(), hoverEnterEvent(), hoverMoveEvent(), hoverLeaveEvent(), keyPressEvent(), keyReleaseEvent(), mousePressEvent(), mouseReleaseEvent(), mouseMoveEvent() et mouseDoubleClickEvent().

Retourne true si l'événement a été reconnu et traité ; sinon (par exemple, si le type d'événement n'a pas été reconnu), false est retourné.

event est l'événement intercepté.

[virtual protected] bool QGraphicsItem::sceneEventFilter(QGraphicsItem *watched, QEvent *event)

Filtre les événements pour l'élément watched. event est l'événement filtré.

La réimplémentation de cette fonction dans une sous-classe permet d'utiliser l'élément comme filtre d'événements pour d'autres éléments, en interceptant tous les événements envoyés à ces éléments avant qu'ils ne puissent répondre.

Les réimplémentations doivent renvoyer true pour empêcher le traitement ultérieur d'un événement donné, garantissant qu'il ne sera pas transmis à l'élément surveillé, ou renvoyer false pour indiquer que l'événement doit être propagé plus loin par le système d'événements.

Voir aussi installSceneEventFilter().

QPointF QGraphicsItem::scenePos() const

Renvoie la position de l'élément en coordonnées de scène. Cela équivaut à appeler mapToScene(0, 0).

Voir également pos(), sceneTransform() et Le système de coordonnées de la vue graphique.

QTransform QGraphicsItem::sceneTransform() const

Renvoie la matrice de transformation de la scène de cet élément. Cette matrice peut être utilisée pour faire correspondre des coordonnées et des formes géométriques du système de coordonnées local de cet élément au système de coordonnées de la scène. Pour faire correspondre des coordonnées de la scène, vous devez d'abord inverser la matrice renvoyée.

Exemple :

QGraphicsRectItem rect;
rect.setPos(100, 100);

rect.sceneTransform().map(QPointF(0, 0));
// returns QPointF(100, 100);

rect.sceneTransform().inverted().map(QPointF(100, 100));
// returns QPointF(0, 0);

Contrairement à transform(), qui ne renvoie que la transformation locale d'un élément, cette fonction inclut la position de l'élément (et de ses parents éventuels) et toutes les propriétés de transformation.

Voir aussi transform(), setTransform(), scenePos(), Le système de coordonnées de la vue graphique, et Transformations.

void QGraphicsItem::scroll(qreal dx, qreal dy, const QRectF &rect = QRectF())

Fait défiler le contenu de rect par dx, dy. Si rect est un rectangle nul (par défaut), le rectangle de délimitation de l'élément est déroulé.

Le défilement constitue une alternative rapide au simple redécoupage lorsque le contenu de l'élément (ou de certaines parties de l'élément) est déplacé verticalement ou horizontalement. En fonction de la transformation actuelle et des capacités du dispositif de peinture (c'est-à-dire la fenêtre), cette opération peut consister à déplacer simplement des pixels d'un endroit à un autre à l'aide de memmove(). Dans la plupart des cas, cette opération est plus rapide que le rendu de la zone entière.

Après le défilement, l'élément émettra une mise à jour pour les zones nouvellement exposées. Si le défilement n'est pas pris en charge (par exemple, si vous effectuez le rendu dans une fenêtre OpenGL, qui ne bénéficie pas de l'optimisation du défilement), cette fonction équivaut à appeler update(rect).

Remarque : le défilement n'est pris en charge que lorsque QGraphicsItem::ItemCoordinateCache est activé ; dans tous les autres cas, appeler cette fonction équivaut à appeler update(rect). Si vous savez avec certitude que l'élément est opaque et n'est pas recouvert par d'autres éléments, vous pouvez faire correspondre les coordonnées de rect à celles de la fenêtre et faire défiler la fenêtre.

QTransform xform = item->deviceTransform(view->viewportTransform());
QRect deviceRect = xform.mapRect(rect).toAlignedRect();
view->viewport()->scroll(dx, dy, deviceRect);

Voir également boundingRect().

void QGraphicsItem::setAcceptDrops(bool on)

Si on est vrai, cet élément accepte les événements de glisser-déposer ; sinon, il est transparent pour les événements de glisser-déposer. Par défaut, les éléments n'acceptent pas les événements de glisser-déposer.

Voir également acceptDrops().

void QGraphicsItem::setAcceptHoverEvents(bool enabled)

Si enabled est vrai, cet élément acceptera les événements de survol ; dans le cas contraire, il les ignorera. Par défaut, les éléments n'acceptent pas les événements de survol.

Les événements de survol sont délivrés lorsqu'il n'y a pas d'élément d'accroche de la souris en cours. Ils sont envoyés lorsque le curseur de la souris entre dans un élément, lorsqu'il se déplace à l'intérieur de l'élément et lorsque le curseur quitte l'élément. Les événements de survol sont généralement utilisés pour mettre en évidence un élément lorsqu'il est saisi et pour suivre le curseur de la souris lorsqu'il survole l'élément (équivalent à QWidget::mouseTracking).

Les éléments parents reçoivent les événements d'entrée au survol avant leurs enfants, et les événements de sortie après leurs enfants. Cependant, le parent ne reçoit pas d'événement de sortie de survol si le curseur entre dans un enfant ; le parent reste "survolé" jusqu'à ce que le curseur quitte sa zone, y compris les zones de ses enfants.

Si un élément parent gère les événements des enfants, il recevra les événements de déplacement en survol, de déplacement par glissement et de dépôt lorsque le curseur passe par ses enfants, mais il ne recevra pas les événements d'entrée et de sortie en survol, ni les événements d'entrée et de sortie par glissement pour le compte de ses enfants.

Un site QGraphicsWidget avec des décorations de fenêtre acceptera les événements de survol quelle que soit la valeur de acceptHoverEvents().

Voir également acceptHoverEvents(), hoverEnterEvent(), hoverMoveEvent() et hoverLeaveEvent().

void QGraphicsItem::setAcceptTouchEvents(bool enabled)

Si enabled est vrai, cet élément acceptera touch events; sinon, il les ignorera. Par défaut, les éléments n'acceptent pas les événements tactiles.

Voir également acceptTouchEvents().

void QGraphicsItem::setAcceptedMouseButtons(Qt::MouseButtons buttons)

Définit l'adresse buttons pour laquelle cet élément accepte les événements de souris.

Par défaut, tous les boutons de la souris sont acceptés. Si un élément accepte un bouton de souris, il devient l'élément de saisie de la souris lorsqu'un événement de pression de la souris est délivré pour ce bouton. Toutefois, si l'élément n'accepte pas le bouton de la souris, QGraphicsScene transmettra les événements de la souris au premier élément inférieur qui les accepte.

Pour désactiver les événements de souris pour un élément (c'est-à-dire le rendre transparent pour les événements de souris), appelez setAcceptedMouseButtons(Qt::NoButton).

Voir également acceptedMouseButtons() et mousePressEvent().

void QGraphicsItem::setActive(bool active)

Si active est vrai et que la scène est active, le panneau de cet élément sera activé. Dans le cas contraire, le panneau est désactivé.

Si l'élément ne fait pas partie d'une scène active, active décidera de ce qu'il adviendra du panneau lorsque la scène deviendra active ou que l'élément sera ajouté à la scène. Si la valeur est vraie, le panneau de l'élément sera activé lorsque l'élément sera ajouté à la scène ou lorsque la scène sera activée. Sinon, l'élément restera inactif indépendamment de l'état d'activation de la scène.

Voir également isPanel(), QGraphicsScene::setActivePanel() et QGraphicsScene::isActive().

void QGraphicsItem::setBoundingRegionGranularity(qreal granularity)

Définit la granularité de la région délimitée à granularity; une valeur comprise entre 0 et 1. La valeur par défaut est 0 (c'est-à-dire la granularité la plus faible, où la région délimitée correspond au rectangle de délimitation de l'élément).

La granularité est utilisée par boundingRegion() pour calculer la finesse de la région délimitée de l'élément. La granularité la plus élevée possible est 1, où boundingRegion() renvoie le contour le plus fin possible pour le périphérique concerné (par exemple, pour une fenêtre de visualisation QGraphicsView, cela donne une région délimitée au pixel près). La plus petite granularité possible est 0. La valeur de granularity décrit le rapport entre la résolution du périphérique et la résolution de la région délimitée (par exemple, une valeur de 0,25 permet d'obtenir une région dans laquelle chaque morceau correspond à 4x4 unités de périphérique / pixels).

Voir également boundingRegionGranularity().

void QGraphicsItem::setCacheMode(QGraphicsItem::CacheMode mode, const QSize &logicalCacheSize = QSize())

Définit le mode de cache de l'élément à mode.

L'argument facultatif logicalCacheSize n'est utilisé que par le mode ItemCoordinateCache et décrit la résolution du tampon de cache ; si logicalCacheSize est (100, 100), QGraphicsItem adaptera l'élément à 100x100 pixels dans la mémoire graphique, quelle que soit la taille logique de l'élément lui-même. Par défaut, QGraphicsItem utilise la taille de boundingRect(). Pour tous les modes de cache autres que ItemCoordinateCache, logicalCacheSize est ignoré.

La mise en cache peut accélérer le rendu si votre élément passe beaucoup de temps à se redessiner. Dans certains cas, le cache peut également ralentir le rendu, en particulier lorsque l'élément passe moins de temps à se redessiner que QGraphicsItem à se redessiner à partir du cache.

Lorsque la mise en cache est activée, la fonction paint() d'un élément dessine généralement dans un cache de pixmap hors écran ; pour toute demande de repeint ultérieure, le cadre de la vue graphique redessine à partir du cache. Cette approche fonctionne particulièrement bien avec QGLWidget, qui stocke tout le cache sous forme de textures OpenGL.

Sachez que la limite de cache de QPixmapCache peut devoir être modifiée pour obtenir des performances optimales.

Vous pouvez en savoir plus sur les différents modes de cache dans la documentation de CacheMode.

Remarque : l'activation de la mise en cache n'implique pas que la fonction paint() de l'élément ne sera appelée qu'en réponse à un appel explicite à update(). Par exemple, sous la pression de la mémoire, Qt XML peut décider d'abandonner certaines informations du cache ; dans ce cas, la fonction paint() d'un élément sera appelée même s'il n'y a pas eu d'appel à update() (c'est-à-dire exactement comme si la mise en cache n'était pas activée).

Voir également cacheMode(), CacheMode, et QPixmapCache::setCacheLimit().

void QGraphicsItem::setCursor(const QCursor &cursor)

Définit la forme actuelle du curseur pour l'élément à cursor. Le curseur de la souris prendra cette forme lorsqu'il sera au-dessus de l'élément. Voir le site list of predefined cursor objects pour une série de formes utiles.

Un élément de l'éditeur peut vouloir utiliser un curseur en forme de poutre en I :

item->setCursor(Qt::IBeamCursor);

Si aucun curseur n'a été défini, le curseur de l'élément situé en dessous est utilisé.

Voir également cursor(), hasCursor(), unsetCursor(), QWidget::cursor et QGuiApplication::overrideCursor().

void QGraphicsItem::setData(int key, const QVariant &value)

Définit les données personnalisées de cet élément pour la clé key à value.

Les données personnalisées d'un élément sont utiles pour stocker des propriétés arbitraires pour n'importe quel élément. Qt n'utilise pas cette fonctionnalité pour stocker des données ; elle est fournie uniquement pour la commodité de l'utilisateur.

Voir aussi data().

void QGraphicsItem::setEnabled(bool enabled)

Si enabled est vrai, l'élément est activé ; sinon, il est désactivé.

Les éléments désactivés sont visibles, mais ils ne reçoivent aucun événement et ne peuvent pas être sélectionnés. Les événements liés à la souris sont ignorés ; ils ne sont pas propagés, sauf si l'élément est également invisible ou s'il n'accepte pas les événements liés à la souris (voir acceptedMouseButtons()). Un élément désactivé ne peut pas devenir le capteur de souris et, par conséquent, un élément perd le capteur s'il devient désactivé lorsqu'il saisit la souris, tout comme il perd le focus s'il avait le focus lorsqu'il était désactivé.

Les éléments désactivés sont traditionnellement dessinés avec des couleurs grisées (voir QPalette::Disabled).

Si vous désactivez un élément parent, tous ses enfants seront également désactivés. Si vous activez un élément parent, tous ses enfants seront activés, sauf s'ils ont été explicitement désactivés (c'est-à-dire que si vous appelez setEnabled(false) sur un enfant, il ne sera pas réactivé si son parent est désactivé, puis réactivé).

Les éléments sont activés par défaut.

Remarque : si vous installez un filtre d'événements, vous pouvez toujours intercepter les événements avant qu'ils ne soient transmis aux éléments ; ce mécanisme ne tient pas compte de l'état activé de l'élément.

Voir également isEnabled().

void QGraphicsItem::setFiltersChildEvents(bool enabled)

Si enabled est vrai, cet élément est configuré pour filtrer tous les événements de tous ses enfants (c'est-à-dire que tous les événements destinés à l'un de ses enfants sont envoyés à cet élément) ; sinon, si enabled est faux, cet élément ne traitera que ses propres événements. La valeur par défaut est false.

Voir également filtersChildEvents().

void QGraphicsItem::setFlag(QGraphicsItem::GraphicsItemFlag flag, bool enabled = true)

Si enabled est vrai, l'indicateur d'élément flag est activé ; sinon, il est désactivé.

Voir également flags() et setFlags().

void QGraphicsItem::setFlags(QGraphicsItem::GraphicsItemFlags flags)

Définit les drapeaux de l'élément à flags. Tous les drapeaux figurant dans flags sont activés ; tous les drapeaux ne figurant pas dans flags sont désactivés.

Si l'élément avait le focus et que flags n'active pas ItemIsFocusable, l'élément perd le focus à la suite de l'appel de cette fonction. De même, si l'élément était sélectionné et que flags n'active pas ItemIsSelectable, l'élément est automatiquement désélectionné.

Par défaut, aucun drapeau n'est activé. (QGraphicsWidget active l'indicateur ItemSendsGeometryChanges par défaut afin de suivre les changements de position).

Voir également flags() et setFlag().

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

Donne à cet élément le focus sur les entrées clavier. L'argument focusReason sera passé dans tout focus event généré par cette fonction ; il est utilisé pour donner une explication sur la raison pour laquelle l'élément a obtenu le focus.

Seuls les éléments activés qui définissent l'indicateur ItemIsFocusable peuvent accepter le focus clavier.

Si cet élément n'est pas visible, n'est pas actif ou n'est pas associé à une scène, il n'obtiendra pas immédiatement le focus d'entrée. Toutefois, il sera enregistré en tant qu'élément de focalisation préféré pour son sous-arbre d'éléments, s'il devient visible par la suite.

À la suite de l'appel de cette fonction, cet élément recevra un message focus in event avec focusReason. Si un autre élément a déjà le focus, cet élément recevra d'abord un message focus out event indiquant qu'il a perdu le focus d'entrée.

Voir également clearFocus(), hasFocus(), focusItem() et focusProxy().

void QGraphicsItem::setFocusProxy(QGraphicsItem *item)

Définit le proxy de focus de l'élément à item.

Si un élément a un proxy de focus, le proxy de focus recevra le focus d'entrée lorsque l'élément obtiendra le focus d'entrée. L'élément lui-même aura toujours le focus (c'est-à-dire que hasFocus() renverra true), mais seul le proxy de focus recevra l'entrée clavier.

Un proxy de focus peut lui-même avoir un proxy de focus, et ainsi de suite. Dans ce cas, l'entrée clavier sera gérée par le proxy de focus le plus externe.

Le proxy de focus item doit appartenir à la même scène que cet élément.

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

void QGraphicsItem::setGraphicsEffect(QGraphicsEffect *effect)

Définit effect comme l'effet de l'élément. Si un effet est déjà installé sur cet élément, QGraphicsItem supprimera l'effet existant avant d'installer le nouvel effet effect. Vous pouvez supprimer un effet existant en appelant setGraphicsEffect(nullptr).

Si effect est l'effet installé sur un autre élément, setGraphicsEffect() supprimera l'effet de l'élément et l'installera sur cet élément.

QGraphicsItem prend possession de effect.

Remarque : cette fonction appliquera l'effet à elle-même et à tous ses enfants.

Voir également graphicsEffect().

void QGraphicsItem::setGroup(QGraphicsItemGroup *group)

Ajoute cet élément au groupe d'éléments group. Si group est nullptr, cet élément est supprimé de tout groupe en cours et ajouté en tant qu'enfant du parent du groupe précédent.

Voir également group() et QGraphicsScene::createItemGroup().

void QGraphicsItem::setInputMethodHints(Qt::InputMethodHints hints)

Définit les indices de la méthode d'entrée actuelle de cet élément à hints.

Voir aussi inputMethodHints() et inputMethodQuery().

void QGraphicsItem::setOpacity(qreal opacity)

Définit l'opacité locale de cet élément opacity, entre 0.0 (transparent) et 1.0 (opaque). L'opacité locale de l'élément est combinée avec les opacités des parents et des ancêtres dans la valeur effectiveOpacity().

Par défaut, l'opacité se propage du parent à l'enfant, de sorte que si l'opacité d'un parent est de 0,5 et que celle de l'enfant est également de 0,5, l'opacité effective de l'enfant sera de 0,25.

La propriété d'opacité détermine l'état du peintre transmis à la fonction paint(). Si l'élément est mis en cache, c'est-à-dire ItemCoordinateCache ou DeviceCoordinateCache, la propriété effective sera appliquée au cache de l'élément lors du rendu.

Il existe deux indicateurs d'élément qui affectent la manière dont l'opacité de l'élément est combinée avec celle du parent : ItemIgnoresParentOpacity et ItemDoesntPropagateOpacityToChildren.

Remarque : le fait de fixer l'opacité d'un élément à 0 ne rendra pas l'élément invisible (selon isVisible()), mais l'élément sera traité comme s'il était invisible. Voir la documentation de setVisible() pour plus d'informations.

Voir également opacity(), effectiveOpacity() et setVisible().

void QGraphicsItem::setPanelModality(QGraphicsItem::PanelModality panelModality)

Définit la modalité de cet élément à panelModality.

La modification de la modalité d'un élément visible prend effet immédiatement.

Voir également panelModality().

void QGraphicsItem::setParentItem(QGraphicsItem *newParent)

Définit l'élément parent de cet élément à newParent. Si cet élément a déjà un parent, il est d'abord supprimé du parent précédent. Si newParent vaut 0, cet élément devient un élément de premier niveau.

Notez que cette opération ajoute implicitement cet élément graphique à la scène du parent. Vous ne devez pas add ajouter l'élément à la scène vous-même.

Le comportement lors de l'appel de cette fonction sur un élément qui est un ancêtre de newParent n'est pas défini.

Voir également parentItem() et childItems().

void QGraphicsItem::setPos(const QPointF &pos)

Fixe la position de l'élément à pos, qui est en coordonnées parentales. Pour les éléments sans parent, pos correspond aux coordonnées de la scène.

La position de l'élément décrit son origine (coordonnée locale (0, 0)) dans les coordonnées du parent.

Voir également pos(), scenePos() et Le système de coordonnées de la vue graphique.

void QGraphicsItem::setPos(qreal x, qreal y)

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

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

void QGraphicsItem::setRotation(qreal angle)

Définit la rotation dans le sens des aiguilles d'une montre angle, en degrés, autour de l'axe Z. La valeur par défaut est 0 (c'est-à-dire que l'élément n'est pas tourné). L'attribution d'une valeur négative entraîne la rotation de l'élément dans le sens inverse des aiguilles d'une montre. Normalement, l'angle de rotation est compris entre -360 et 360, mais il est également possible d'attribuer des valeurs en dehors de cette plage (par exemple, une rotation de 370 degrés équivaut à une rotation de 10 degrés).

L'élément est pivoté autour de son point d'origine de transformation, qui est par défaut (0, 0). Vous pouvez sélectionner une origine de transformation différente en appelant setTransformOriginPoint().

La rotation est combinée avec les fonctions scale(), transform() et transformations() de l'élément pour faire correspondre le système de coordonnées de l'élément à celui de l'élément parent.

Voir également rotation(), setTransformOriginPoint() et Transformations.

void QGraphicsItem::setScale(qreal factor)

Définit l'échelle factor de l'élément. Le facteur d'échelle par défaut est de 1,0 (c'est-à-dire que l'élément n'est pas mis à l'échelle). Un facteur d'échelle de 0,0 réduit l'élément à un seul point. Si vous indiquez un facteur d'échelle négatif, l'élément sera retourné et reflété (c'est-à-dire qu'il subira une rotation de 180 degrés).

L'élément est mis à l'échelle autour de son point d'origine de transformation, qui est par défaut (0, 0). Vous pouvez sélectionner une origine de transformation différente en appelant setTransformOriginPoint().

L'échelle est combinée avec les fonctions rotation(), transform() et transformations() de l'élément pour faire correspondre le système de coordonnées de l'élément à celui de l'élément parent.

Voir également scale(), setTransformOriginPoint() et Exemple de transformation.

void QGraphicsItem::setSelected(bool selected)

Si selected est vrai et que cet élément est sélectionnable, il est sélectionné ; sinon, il est désélectionné.

Si l'élément fait partie d'un groupe, l'état de sélection de l'ensemble du groupe est modifié par cette fonction. Si le groupe est sélectionné, tous les éléments du groupe sont également sélectionnés, et si le groupe n'est pas sélectionné, aucun élément du groupe n'est sélectionné.

Seuls les éléments visibles, activés et sélectionnables peuvent être sélectionnés. Si selected est vrai et que cet élément est invisible, désactivé ou non sélectionnable, cette fonction ne fait rien.

Par défaut, les éléments ne peuvent pas être sélectionnés. Pour activer la sélection, activez l'indicateur ItemIsSelectable.

Cette fonction est fournie pour des raisons de commodité, car elle permet de basculer individuellement l'état de sélection d'un élément. Cependant, une façon plus courante de sélectionner des éléments est d'appeler QGraphicsScene::setSelectionArea(), qui appellera cette fonction pour tous les éléments visibles, activés et sélectionnables à l'intérieur d'une zone spécifiée de la scène.

Voir également isSelected() et QGraphicsScene::selectedItems().

void QGraphicsItem::setToolTip(const QString &toolTip)

Définit l'info-bulle de l'élément à toolTip. Si toolTip est vide, l'info-bulle de l'élément est effacée.

Voir aussi toolTip() et QToolTip.

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

Définit la matrice de transformation actuelle de l'élément à matrix.

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

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

La matrice de transformation est combinée avec les transformations rotation(), scale() et transformations() de l'élément en une transformation combinée qui fait correspondre le système de coordonnées de l'élément à celui de son parent.

Voir également transform(), setRotation(), setScale(), setTransformOriginPoint(), Le système de coordonnées de la vue graphique, et Transformations.

void QGraphicsItem::setTransformOriginPoint(const QPointF &origin)

Définit le point origin pour la transformation en coordonnées de l'élément.

Voir aussi transformOriginPoint() et Transformations.

void QGraphicsItem::setTransformOriginPoint(qreal x, qreal y)

Définit le point d'origine de la transformation dans les coordonnées de l'élément. Cela équivaut à appeler setTransformOriginPoint(QPointF(x, y)).

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

Voir aussi setTransformOriginPoint() et Transformations.

void QGraphicsItem::setTransformations(const QList<QGraphicsTransform *> &transformations)

Définit une liste de graphiques transformations (QGraphicsTransform) qui s'appliquent actuellement à cet élément.

Si vous souhaitez simplement faire pivoter ou mettre à l'échelle un élément, vous devriez plutôt appeler setRotation() ou setScale(). Si vous souhaitez définir une transformation arbitraire sur un élément, vous pouvez appeler setTransform().

QGraphicsTransform permet d'appliquer et de contrôler une chaîne d'opérations de transformation individuelles sur un élément. C'est particulièrement utile dans les animations, où chaque opération de transformation doit être interpolée indépendamment ou différemment.

Les transformations sont combinées avec les éléments rotation(), scale() et transform() pour faire correspondre le système de coordonnées de l'élément à l'élément parent.

Voir également transformations(), scale(), setTransformOriginPoint() et Transformations.

void QGraphicsItem::setVisible(bool visible)

Si visible est vrai, l'élément est rendu visible. Dans le cas contraire, l'élément est rendu invisible. Les éléments invisibles ne sont pas peints et ne reçoivent aucun événement. En particulier, les événements liés à la souris traversent les éléments invisibles et sont transmis à tout élément situé derrière. Les éléments invisibles ne sont pas non plus sélectionnables, ils ne peuvent pas prendre le focus d'entrée et ne sont pas détectés par les fonctions de localisation d'éléments de QGraphicsScene.

Si un élément devient invisible alors qu'il est saisi par la souris (c'est-à-dire alors qu'il reçoit des événements souris), il perd automatiquement la saisie de la souris, et la saisie n'est pas rétablie en rendant l'élément visible à nouveau ; il doit recevoir une nouvelle pression de la souris pour retrouver la saisie de la souris.

De même, un élément invisible ne peut pas avoir le focus, donc si l'élément a le focus lorsqu'il devient invisible, il perdra le focus, et le focus ne sera pas récupéré en rendant simplement l'élément visible à nouveau.

Si vous cachez un élément parent, tous ses enfants seront également cachés. Si vous affichez un élément parent, tous ses enfants seront affichés, sauf s'ils ont été explicitement cachés (c'est-à-dire que si vous appelez setVisible(false) sur un enfant, il ne sera pas réaffiché même si son parent est caché, puis réaffiché).

Les éléments sont visibles par défaut ; il n'est pas nécessaire d'appeler setVisible() sur un nouvel élément.

Remarque : un élément dont l'opacité est fixée à 0 sera toujours considéré comme visible, bien qu'il soit traité comme un élément invisible : les événements de la souris le traverseront, il ne sera pas inclus dans les éléments renvoyés par QGraphicsView::items(), etc. Cependant, l'élément conservera le focus.

Voir aussi isVisible(), show(), hide() et setOpacity().

void QGraphicsItem::setX(qreal x)

Définit les coordonnées x de la position de l'élément. Équivaut à appeler setPos(x, y()).

Voir aussi x() et setPos().

void QGraphicsItem::setY(qreal y)

Définit les coordonnées y de la position de l'élément. Équivaut à appeler setPos(x(), y).

Voir également y(), x() et setPos().

void QGraphicsItem::setZValue(qreal z)

Définit la valeur Z de l'élément à z. La valeur Z détermine l'ordre d'empilement des éléments frères et sœurs (voisins). Un élément frère ayant une valeur Z élevée sera toujours dessiné au-dessus d'un autre élément frère ayant une valeur Z plus faible.

Si vous rétablissez la valeur Z, l'ordre d'insertion de l'élément déterminera son ordre d'empilement.

La valeur Z n'affecte en rien la taille de l'élément.

La valeur Z par défaut est 0.

Voir également zValue(), Sorting, stackBefore() et ItemStacksBehindParent.

[virtual] QPainterPath QGraphicsItem::shape() const

Renvoie la forme de cet élément sous forme de QPainterPath en coordonnées locales. La forme est utilisée à de nombreuses fins, notamment pour la détection des collisions, les tests de collision et les fonctions QGraphicsScene::items().

L'implémentation par défaut appelle boundingRect() pour renvoyer une forme rectangulaire simple, mais les sous-classes peuvent réimplémenter cette fonction pour renvoyer une forme plus précise pour les objets non rectangulaires. Par exemple, un objet rond peut choisir de renvoyer une forme elliptique pour une meilleure détection des collisions. Par exemple, une forme elliptique peut être renvoyée pour un objet rond afin de mieux détecter les collisions :

QPainterPath RoundItem::shape() const
{
    QPainterPath path;
    path.addEllipse(boundingRect());
    return path;
}

Le contour d'une forme peut varier en fonction de la largeur et du style du stylo utilisé lors du dessin. Si vous souhaitez inclure ce contour dans la forme de l'élément, vous pouvez créer une forme à partir du trait à l'aide de QPainterPathStroker.

Cette fonction est appelée par les implémentations par défaut de contains() et collidesWithPath().

Voir également boundingRect(), contains(), prepareGeometryChange() et QPainterPathStroker.

void QGraphicsItem::show()

Affiche l'élément (les éléments sont visibles par défaut).

Cette fonction de commodité équivaut à appeler setVisible(true).

Voir aussi hide() et setVisible().

void QGraphicsItem::stackBefore(const QGraphicsItem *sibling)

Empile cet élément avant sibling, ce qui signifie que cet élément sera dessiné derrière l'élément frère. En d'autres termes, l'élément frère apparaîtra visuellement au-dessus de cet élément.

Les deux éléments doivent être frères (c'est-à-dire qu'ils doivent partager le même élément parent ou être tous deux des éléments de niveau supérieur). Le site sibling doit avoir la même valeur Z que cet élément, sinon l'appel à cette fonction n'aura aucun effet.

Par défaut, tous les éléments frères sont empilés par ordre d'insertion (c'est-à-dire que le premier élément que vous ajoutez est dessiné avant le suivant). Si les valeurs Z de deux éléments sont différentes, l'élément ayant la valeur Z la plus élevée est dessiné au-dessus. Lorsque les valeurs Z sont identiques, l'ordre d'insertion détermine l'ordre d'empilement.

Voir également setZValue(), ItemStacksBehindParent, et Sorting.

QGraphicsObject *QGraphicsItem::toGraphicsObject()

Renvoie l'élément graphique converti en QGraphicsObject, si la classe est en fait un objet graphique, 0 sinon.

const QGraphicsObject *QGraphicsItem::toGraphicsObject() const

Renvoie l'élément graphique converti en QGraphicsObject, si la classe est en fait un objet graphique, 0 sinon.

QString QGraphicsItem::toolTip() const

Renvoie l'info-bulle de l'élément, ou une adresse QString vide si aucune info-bulle n'a été définie.

Voir aussi setToolTip() et QToolTip.

QGraphicsItem *QGraphicsItem::topLevelItem() const

Renvoie l'élément de premier niveau de cet élément. L'élément de premier niveau est l'élément ancêtre le plus élevé de l'élément dont le parent est nullptr. Si un élément n'a pas de parent, son propre pointeur est renvoyé (c'est-à-dire qu'un élément de premier niveau est son propre élément de premier niveau).

Voir également parentItem().

QGraphicsWidget *QGraphicsItem::topLevelWidget() const

Renvoie un pointeur sur le widget de premier niveau de l'élément (c'est-à-dire l'ancêtre de l'élément dont le parent est nullptr, ou dont le parent n'est pas un widget), ou nullptr si cet élément n'a pas de widget de premier niveau. Si l'élément est son propre widget de premier niveau, cette fonction renvoie un pointeur sur l'élément lui-même.

QTransform QGraphicsItem::transform() const

Renvoie la matrice de transformation de cet élément.

La matrice de transformation est combinée avec les transformations de l'élément rotation(), scale() et transformations() en une transformation combinée pour l'élément.

La matrice de transformation par défaut est une matrice d'identité.

Voir aussi setTransform() et sceneTransform().

QPointF QGraphicsItem::transformOriginPoint() const

Renvoie le point d'origine de la transformation en coordonnées de l'élément.

La valeur par défaut est QPointF(0,0).

Voir aussi setTransformOriginPoint() et Transformations.

QList<QGraphicsTransform *> QGraphicsItem::transformations() const

Renvoie une liste des transformations graphiques qui s'appliquent actuellement à cet élément.

QGraphicsTransform permet d'appliquer et de contrôler une chaîne d'opérations de transformation individuelles sur un élément. C'est particulièrement utile dans les animations, où chaque opération de transformation doit être interpolée indépendamment ou différemment.

Les transformations sont combinées avec les éléments rotation(), scale() et transform() pour faire correspondre le système de coordonnées de l'élément à l'élément parent.

Voir également setTransformations(), scale(), rotation(), transformOriginPoint() et Transformations.

[virtual] int QGraphicsItem::type() const

Renvoie le type d'un élément sous la forme d'un int. Toutes les classes d'éléments graphiques standard sont associées à une valeur unique ; voir QGraphicsItem::Type. Ces informations sur le type sont utilisées par qgraphicsitem_cast() pour faire la distinction entre les types.

L'implémentation par défaut (dans QGraphicsItem) renvoie UserType.

Pour permettre l'utilisation de qgraphicsitem_cast() avec un élément personnalisé, réimplémentez cette fonction et déclarez une valeur Type enum égale au type de votre élément personnalisé. Les éléments personnalisés doivent renvoyer une valeur supérieure ou égale à UserType (65536).

Par exemple, les éléments personnalisés doivent renvoyer une valeur supérieure ou égale à (65536) :

class CustomItem : public QGraphicsItem
{
public:
   enum { Type = UserType + 1 };

   int type() const override
   {
       // Enable the use of qgraphicsitem_cast with this item.
       return Type;
   }
   ...
};

Voir aussi UserType.

void QGraphicsItem::ungrabKeyboard()

Libère l'emprise du clavier.

Voir aussi grabKeyboard() et ungrabMouse().

void QGraphicsItem::ungrabMouse()

Libère la saisie de la souris.

Voir également grabMouse() et ungrabKeyboard().

void QGraphicsItem::unsetCursor()

Efface le curseur de cet élément.

Voir aussi hasCursor() et setCursor().

void QGraphicsItem::update(const QRectF &rect = QRectF())

Planifie un nouveau dessin de la zone couverte par rect dans cet élément. Vous pouvez appeler cette fonction chaque fois que votre élément doit être redessiné, par exemple s'il change d'apparence ou de taille.

Cette fonction ne provoque pas une peinture immédiate ; elle planifie plutôt une demande de peinture qui est traitée par QGraphicsView une fois que le contrôle atteint la boucle d'événements. L'élément ne sera redessiné que s'il est visible dans une vue associée.

Si l'élément est repeint, les autres éléments qui chevauchent la zone rect peuvent également être repeints.

Si l'élément est invisible (c'est-à-dire que isVisible() renvoie false), cette fonction ne fait rien.

Voir également paint() et boundingRect().

void QGraphicsItem::update(qreal x, qreal y, qreal width, qreal height)

Cette fonction de commodité équivaut à appeler update(QRectF(x, y, width, height)).

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

[protected] void QGraphicsItem::updateMicroFocus()

Met à jour la micro-focalisation de l'élément.

Voir aussi QInputMethod.

[virtual protected] void QGraphicsItem::wheelEvent(QGraphicsSceneWheelEvent *event)

Ce gestionnaire d'événement, pour l'événement event, peut être réimplémenté pour recevoir les événements de roue pour cet élément. Si vous réimplémentez cette fonction, event sera accepté par défaut.

Si vous ignorez l'événement (c'est-à-dire en appelant QEvent::ignore()), il se propagera à tout élément situé sous cet élément. Si aucun élément n'accepte l'événement, il sera ignoré par la scène et se propagera à la vue (par exemple, la barre de défilement verticale de la vue).

L'implémentation par défaut ignore l'événement.

Voir également sceneEvent().

QGraphicsWidget *QGraphicsItem::window() const

Renvoie la fenêtre de l'élément, ou nullptr si l'élément n'a pas de fenêtre. Si l'élément est une fenêtre, il se renvoie lui-même. Sinon, il renvoie l'ancêtre le plus proche qui est une fenêtre.

Voir aussi QGraphicsWidget::isWindow().

qreal QGraphicsItem::x() const

Cette fonction de commodité équivaut à appeler pos().x().

Voir aussi setX() et y().

qreal QGraphicsItem::y() const

Cette fonction de commodité équivaut à appeler pos().y().

Voir aussi setY() et x().

qreal QGraphicsItem::zValue() const

Renvoie la valeur Z de l'élément. La valeur Z affecte l'ordre d'empilement des éléments frères (voisins).

La valeur Z par défaut est 0.

Voir également setZValue(), Sorting, stackBefore() et ItemStacksBehindParent.

Non-membres apparentés

template <typename T> T qgraphicsitem_cast(QGraphicsItem *item)

Renvoie l'objet item vers le type T si item est de type T ; sinon, nullptr est renvoyé.

Remarque : pour que cette fonction fonctionne correctement avec les éléments personnalisés, il convient de réimplémenter la fonction type() pour chaque sous-classe personnalisée de QGraphicsItem.

Voir également QGraphicsItem::type() et QGraphicsItem::UserType.

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