Sur cette page

QCursor Class

La classe QCursor permet de créer un curseur de souris de forme arbitraire. En savoir plus...

En-tête : #include <QCursor>
CMake : find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake : QT += gui

Fonctions publiques

QCursor()
QCursor(Qt::CursorShape shape)
QCursor(const QPixmap &pixmap, int hotX = -1, int hotY = -1)
QCursor(const QBitmap &bitmap, const QBitmap &mask, int hotX = -1, int hotY = -1)
QCursor(const QCursor &c)
QCursor(QCursor &&other)
~QCursor()
QBitmap bitmap() const
QPoint hotSpot() const
QBitmap mask() const
QPixmap pixmap() const
void setShape(Qt::CursorShape shape)
Qt::CursorShape shape() const
void swap(QCursor &other)
operator QVariant() const
QCursor &operator=(QCursor &&other)
QCursor &operator=(const QCursor &c)

Membres publics statiques

QPoint pos()
QPoint pos(const QScreen *screen)
void setPos(int x, int y)
void setPos(QScreen *screen, int x, int y)
void setPos(const QPoint &p)
void setPos(QScreen *screen, const QPoint &p)
bool operator!=(const QCursor &lhs, const QCursor &rhs)
QDataStream &operator<<(QDataStream &stream, const QCursor &cursor)
bool operator==(const QCursor &lhs, const QCursor &rhs)
QDataStream &operator>>(QDataStream &stream, QCursor &cursor)

Description détaillée

Cette classe sert principalement à créer des curseurs de souris associés à des widgets particuliers, ainsi qu’à obtenir et à définir la position du curseur de la souris.

Qt propose plusieurs formes de curseurs standard, mais vous pouvez également créer des formes de curseurs personnalisées à partir d'une image de fond ( QBitmap), d'un masque et d'une zone active (hotspot).

Pour associer un curseur à un widget, utilisez ` QWidget::setCursor()`. Pour associer un curseur à tous les widgets (généralement pendant une courte durée), utilisez ` QGuiApplication::setOverrideCursor()`.

Pour définir une forme de curseur, utilisez la fonction ` QCursor::setShape()` ou le constructeur de `QCursor` qui prend la forme en argument ; vous pouvez également utiliser l’un des curseurs prédéfinis dans l’énumération ` Qt::CursorShape `.

Si vous souhaitez créer un curseur à partir de votre propre image bitmap, utilisez soit le constructeur QCursor qui prend une image bitmap et un masque en paramètres, soit le constructeur qui prend une image pixmap en paramètre.

Pour définir ou récupérer la position du curseur de la souris, utilisez les méthodes statiques QCursor::pos() et QCursor::setPos().

Remarque : il est possible de créer un `QCursor` avant ` QGuiApplication`, mais cela n’a d’utilité que pour servir de marque-place à un véritable `QCursor` créé après ` QGuiApplication`. Tenter d’utiliser un `QCursor` créé avant ` QGuiApplication ` entraînera un plantage.

Remarque à l'attention des utilisateurs de X11

Sous X11, Qt prend en charge la bibliothèque Xcursor, qui permet d’utiliser des thèmes d’icônes en couleur. Le tableau ci-dessous indique le nom de curseur utilisé pour chaque valeur de Qt::CursorShape. Si un curseur ne peut être trouvé à l’aide du nom indiqué ci-dessous, un curseur X11 standard sera utilisé à la place. Remarque : X11 ne fournit pas de curseurs adaptés à toutes les valeurs possibles de l’ Qt::CursorShape. Il est possible que certains curseurs soient tirés du thème Xcursor, tandis que d’autres utiliseront un curseur bitmap interne.

ShapeQt::CursorShape ValeurNom du curseurFormeQt::CursorShape ValeurNom du curseur
Curseur en forme de flècheQt::ArrowCursorleft_ptrCurseur de redimensionnement verticalQt::SizeVerCursorsize_ver
Curseur flèche vers le hautQt::UpArrowCursorup_arrowCurseur de redimensionnement horizontalQt::SizeHorCursorsize_hor
Curseur en croixQt::CrossCursorcrossCurseur de redimensionnement en diagonaleQt::SizeBDiagCursorsize_bdiag
Curseur en forme de poutre en IQt::IBeamCursoribeamCurseur de redimensionnement en diagonaleQt::SizeFDiagCursorsize_fdiag
Curseur « Attendre »Qt::WaitCursorwaitDéplacer le curseurQt::SizeAllCursorsize_all
Curseur « en cours de traitement »Qt::BusyCursorleft_ptr_watchCurseur à division verticaleQt::SplitVCursorsplit_v
Curseur interditQt::ForbiddenCursorforbiddenCurseur divisé horizontalementQt::SplitHCursorsplit_h
Curseur en forme de main pointantQt::PointingHandCursorpointing_handCurseur en forme de main ouverteQt::OpenHandCursoropenhand
C'est quoi, ce curseur ?Qt::WhatsThisCursorwhats_thisCurseur en forme de poing ferméQt::ClosedHandCursorclosedhand
Qt::DragMoveCursordnd-move ou moveQt::DragCopyCursordnd-copy ou copy
Qt::DragLinkCursordnd-link ou link

Voir aussi QWidget.

Documentation sur les fonctions membres

QCursor::QCursor()

Crée un curseur avec la forme de flèche par défaut.

QCursor::QCursor(Qt::CursorShape shape)

Crée un curseur avec l'shape spécifiée.

Voir Qt::CursorShape pour obtenir la liste des formes.

Voir également setShape().

[explicit] QCursor::QCursor(const QPixmap &pixmap, int hotX = -1, int hotY = -1)

Crée un curseur pixmap personnalisé.

pixmap est l'image. On lui attribue généralement un masque (défini à l'aide de ` QPixmap::setMask()`). ` hotX ` et ` hotY ` définissent la zone active du curseur.

Si hotX est négatif, il est défini sur pixmap().width()/2. Si hotY est négatif, il est défini sur pixmap().height()/2.

Les tailles de curseur valides dépendent du matériel d'affichage (ou du système de fenêtrage sous-jacent). Nous recommandons d'utiliser des curseurs de 32 x 32, car cette taille est prise en charge sur toutes les plateformes. Certaines plateformes prennent également en charge les curseurs de 16 x 16, 48 x 48 et 64 x 64.

Voir également QPixmap::QPixmap() et QPixmap::setMask().

QCursor::QCursor(const QBitmap &bitmap, const QBitmap &mask, int hotX = -1, int hotY = -1)

Crée un curseur bitmap personnalisé.

bitmap et mask constituent le bitmap. hotX et hotY définissent la zone sensible du curseur.

Si hotX est négatif, il est défini sur bitmap().width()/2. Si hotY est négatif, il est défini sur bitmap().height()/2.

Les bits d’ bitmap (B) et de mask (M) du curseur sont combinés comme suit :

  • B=1 et M=1 donnent du noir.
  • B = 0 et M = 1 donne du blanc.
  • B = 0 et M = 0 donne la transparence.
  • B=1 et M=0 donne un résultat XOR sous Windows, des résultats indéfinis sur toutes les autres plateformes.

Utilisez l’ Qt::color0 de couleur globale Qt pour dessiner des pixels de 0 et Qt::color1 pour dessiner des pixels de 1 dans les images bitmap.

Les tailles de curseur valides dépendent du matériel d'affichage (ou du système de fenêtrage sous-jacent). Nous recommandons d'utiliser des curseurs de 32 x 32, car cette taille est prise en charge sur toutes les plateformes. Certaines plateformes prennent également en charge les curseurs de 16 x 16, 48 x 48 et 64 x 64.

Voir également QBitmap::QBitmap() et QBitmap::setMask().

QCursor::QCursor(const QCursor &c)

Crée une copie du curseur c.

[noexcept] QCursor::QCursor(QCursor &&other)

Crée un curseur à partir de ` other`. Une fois le curseur déplacé, les seules opérations valides sur ` other ` sont la destruction et l'affectation (par déplacement ou par copie). Les effets de l'appel de toute autre fonction membre sur une instance à partir de laquelle le curseur a été déplacé sont indéfinis.

[noexcept] QCursor::~QCursor()

Supprime le curseur.

QBitmap QCursor::bitmap() const

Renvoie l'image bitmap du curseur, ou une image bitmap nulle s'il s'agit d'un des curseurs standard.

QPoint QCursor::hotSpot() const

Renvoie la position du curseur, ou (0, 0) s'il s'agit d'un des curseurs standard.

QBitmap QCursor::mask() const

Renvoie le masque bitmap du curseur, ou un bitmap nul s'il s'agit d'un des curseurs standard.

QPixmap QCursor::pixmap() const

Renvoie l'image du curseur. Cette fonction n'est valable que si le curseur est un curseur de type « pixmap ».

[static] QPoint QCursor::pos()

Renvoie la position du curseur (point actif) de l'écran principal en coordonnées globales de l'écran.

Vous pouvez appeler la fonction ` QWidget::mapFromGlobal()` pour la convertir en coordonnées de widget.

Remarque : la position est interrogée auprès du système de fenêtrage. Si des événements de souris sont générés par d’autres moyens (par exemple, via QWindowSystemInterface dans un test unitaire), ces faux mouvements de souris ne seront pas pris en compte dans la valeur renvoyée.

Remarque : sur les plateformes dépourvues de système de fenêtrage ou sur lesquelles les curseurs ne sont pas disponibles, la position renvoyée est basée sur les événements de déplacement de la souris générés via QWindowSystemInterface.

Voir également setPos(), QWidget::mapFromGlobal(), QWidget::mapToGlobal() et QGuiApplication::primaryScreen().

[static] QPoint QCursor::pos(const QScreen *screen)

Renvoie la position du curseur (zone sensible) de l'screen, exprimée en coordonnées globales de l'écran.

Vous pouvez appeler la fonction ` QWidget::mapFromGlobal()` pour la convertir en coordonnées du widget.

Voir également ` setPos()`, ` QWidget::mapFromGlobal()` et ` QWidget::mapToGlobal()`.

[static] void QCursor::setPos(int x, int y)

Déplace le curseur (zone sensible) de l'écran principal vers la position globale à l'écran (x, y).

Vous pouvez appeler la fonction ` QWidget::mapToGlobal()` pour convertir les coordonnées d’un widget en coordonnées globales de l’écran.

Voir également pos(), QWidget::mapFromGlobal(), QWidget::mapToGlobal() et QGuiApplication::primaryScreen().

[static] void QCursor::setPos(QScreen *screen, int x, int y)

Déplace le curseur (zone sensible) de l'screen vers la position globale à l'écran (x, y).

Vous pouvez appeler la fonction ` QWidget::mapToGlobal()` pour convertir les coordonnées du widget en coordonnées globales de l'écran.

Remarque : l'appel de cette fonction entraîne une modification de la position du curseur via le système de fenêtrage. Le système de fenêtrage réagit généralement en envoyant des événements de souris à la fenêtre de l'application. Cela signifie que l’utilisation de cette fonction doit être évitée dans les tests unitaires et partout où de faux événements de souris sont injectés via `QWindowSystemInterface`, car l’état de la souris du système de fenêtrage (en ce qui concerne les boutons, par exemple) peut ne pas correspondre à l’état indiqué dans les événements générés par l’application.

Remarque : sur les plateformes dépourvues de système de fenêtrage ou ne prenant pas en charge les curseurs, cette fonction peut ne rien faire.

Voir également pos(), QWidget::mapFromGlobal() et QWidget::mapToGlobal().

[static] void QCursor::setPos(const QPoint &p)

Déplace le curseur (zone interactive) vers la position globale à l'écran correspondant au point p.

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

[static] void QCursor::setPos(QScreen *screen, const QPoint &p)

Déplace le curseur (zone sensible) vers la position globale à l'écran de l'screen, au point p.

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

void QCursor::setShape(Qt::CursorShape shape)

Définit le curseur sur la forme identifiée par shape.

Voir Qt::CursorShape pour la liste des formes de curseur.

Voir également shape().

Qt::CursorShape QCursor::shape() const

Renvoie l'identifiant de la forme du curseur.

Voir aussi setShape().

[noexcept] void QCursor::swap(QCursor &other)

Permute ce curseur avec celui de other. Cette opération est très rapide et ne pose jamais de problème.

QCursor::operator QVariant() const

Renvoie le curseur sous la forme d'un objet de type ` QVariant`.

[noexcept] QCursor &QCursor::operator=(QCursor &&other)

Cette opération attribue « other » à cette instance de « QCursor ».

QCursor &QCursor::operator=(const QCursor &c)

Attribue la valeur « c » à ce curseur et renvoie une référence à ce curseur.

Éléments non membres associés

[noexcept] bool operator!=(const QCursor &lhs, const QCursor &rhs)

Opérateur d'inégalité. Renvoie l'équivalent de !(lhs == rhs).

Voir aussi operator==(const QCursor &lhs, const QCursor &rhs).

QDataStream &operator<<(QDataStream &stream, const QCursor &cursor)

Écrit l'cursor dans le fichier stream.

Voir également «Sérialisation des types de données Qt ».

[noexcept] bool operator==(const QCursor &lhs, const QCursor &rhs)

Opérateur d'égalité. Renvoie true si lhs et rhs ont la même valeur de shape() et, dans le cas de bitmap cursors, la même valeur de hotSpot() ainsi que soit la même valeur de pixmap(), soit la même valeur de bitmap() et de mask().

Remarque : lors de la comparaison de curseurs bitmap, cette fonction ne compare que l’ cache keys des bitmaps, et non chaque pixel.

Voir également operator!=(const QCursor &lhs, const QCursor &rhs).

QDataStream &operator>>(QDataStream &stream, QCursor &cursor)

Lit le fichier « cursor » à partir de l'stream.

Voir également «Sérialisation des types de données Qt ».

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