QContextMenuEvent Class
La classe `QContextMenuEvent` contient des paramètres qui décrivent un événement de menu contextuel. En savoir plus...
| En-tête : | #include <QContextMenuEvent> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake : | QT += gui |
| Hérite de : | QInputEvent |
- Liste de tous les membres, y compris les membres hérités
- Membres obsolètes
- QContextMenuEvent fait partie des classes d'événements.
Types publics
| enum | Reason { Mouse, Keyboard, Other } |
Fonctions publiques
| QContextMenuEvent(QContextMenuEvent::Reason reason, const QPoint &pos, const QPoint &globalPos, Qt::KeyboardModifiers modifiers = Qt::NoModifier) | |
| const QPoint & | globalPos() const |
| int | globalX() const |
| int | globalY() const |
| const QPoint & | pos() const |
| QContextMenuEvent::Reason | reason() const |
| int | x() const |
| int | y() const |
Fonctions protégées
| QContextMenuEvent(QContextMenuEvent &&) | |
| QContextMenuEvent & | operator=(QContextMenuEvent &&) |
| QContextMenuEvent & | operator=(const QContextMenuEvent &other) |
Description détaillée
Un événement de menu contextuel est déclenché lorsqu'un utilisateur effectue une action censée ouvrir un menu contextuel :
- en cliquant avec le bouton droit de la souris
- appuyer sur une touche de menu dédiée du clavier (si le clavier en dispose d'une, comme la touche Menu sur les claviers PC standard à 104 touches)
- en appuyant sur un autre raccourci clavier (tel que « Ctrl+Retour » par défaut sous macOS 15 et versions ultérieures)
Le menu contextuel attendu doit contenir des é actions s pertinentes par rapport à un contenu donné de l’application (le « contexte »). Dans Qt, le contexte correspond au moins à l’ widget ou à l’ Qt Quick Item qui reçoit l’événement QContextMenuEvent. S’il y a une sélection, celle-ci doit probablement être considérée comme le contexte. Le contexte peut être affiné davantage à l’aide de QContextMenuEvent::pos() pour cibler précisément le contenu au sein du widget, de l’élément ou de la sélection.
Les widgets peuvent redéfinir la méthode ` QWidget::contextMenuEvent()` pour gérer cet événement. De nombreux widgets le font déjà et proposent par défaut des menus contextuels utiles. Certains widgets disposent d'une fonction telle que ` createStandardContextMenu()` pour remplir l'ensemble d'actions par défaut dans un ` QMenu`, qui peut ensuite être personnalisé davantage dans votre sous-classe avant d'être affiché.
Dans Qt Quick, l’événement peut être géré via la propriété attachée ContextMenu. Certains contrôles QtQuick.Controls fournissent déjà des menus contextuels par défaut.
Contrairement à la plupart des événements synthétiques (tels que l’événement « QMouseEvent », qui n’est envoyé qu’après le rejet d’un événement « QTouchEvent » ou « QTabletEvent »), l’événement « QContextMenuEvent » est envoyé, que l’événement de souris ou de touche d’origine ait déjà été géré ou non et qu’il ait été « accepted ». Ceci vise à s’adapter au modèle d’interface utilisateur de Windows, qui consiste à sélectionner certains éléments (icônes, éléments graphiques ou cellules dans une vue d’éléments) à l’aide du bouton droit de la souris (en cliquant ou en faisant glisser), puis à afficher un menu contextuel dès que l’on relâche le bouton droit de la souris. (Les actions du menu sont censées s’appliquer à la sélection.) Par conséquent, sous Windows, l’événement `QContextMenuEvent` est envoyé au relâchement de la souris ; tandis que sur d’autres plateformes, il est envoyé lors de l’appui. Par défaut, Qt suit le modèle « platform convention ».
Il existe également certaines classes de type « Qt Quick Controls », telles que ` Pane `, qui acceptent les événements de souris et reçoivent néanmoins un événement `QContextMenuEvent` après un clic ou une pression de la souris.
Si vous préférez prendre en charge le modèle d’interface utilisateur « pression-glissement-relâchement » pour ouvrir un menu contextuel lors de la pression, puis faire glisser le curseur sur un élément de menu pour le sélectionner lors du relâchement, vous devrez le faire en gérant directement les événements « QMouseEvents » (en redéfinissant la méthode virtual functions dans les sous-classes de QWidget, ou en utilisant TapHandler pour ouvrir un Menu dans Qt Quick) ; et alors l’événement `QContextMenuEvent` sera redondant lorsque ` reason()` est défini comme ` Mouse`. Dans ce cas, vous devez appeler ` ignore()` sur l’événement ; mais vous devez tout de même vous assurer que le widget, le contrôle personnalisé ou l’application puisse répondre à un événement `QContextMenuEvent` qui utilise ` comes from ` le raccourci clavier spécifique à la plateforme.
Lorsqu’un QContextMenuEvent est de type « ignored », Qt tente de le transmettre à d’autres widgets et/ou éléments situés sous l’ position (qui est généralement déterminée à partir de la position du curseur).
Documentation sur les types de membres
enum QContextMenuEvent::Reason
Cette énumération décrit la raison pour laquelle l'événement a été envoyé.
| Constante | Valeur | Description |
|---|---|---|
QContextMenuEvent::Mouse | 0 | La souris a provoqué l'envoi de l'événement. En général, cela signifie que le bouton droit de la souris a été cliqué, mais cela dépend de la plate-forme. |
QContextMenuEvent::Keyboard | 1 | C'est le clavier qui a provoqué l'envoi de cet événement. Sous Windows, cela signifie que la touche Menu a été enfoncée. |
QContextMenuEvent::Other | 2 | L’événement a été déclenché par un autre moyen (c’est-à-dire ni par la souris ni par le clavier). |
Documentation des fonctions membres
QContextMenuEvent::QContextMenuEvent(QContextMenuEvent::Reason reason, const QPoint &pos, const QPoint &globalPos, Qt::KeyboardModifiers modifiers = Qt::NoModifier)
Crée un objet d'événement de menu contextuel dont le paramètre « accept » est défini sur « false ».
Le paramètre « reason » doit prendre l’une des valeurs suivantes : « QContextMenuEvent::Mouse » ou « QContextMenuEvent::Keyboard ».
Le paramètre « pos » spécifie la position de la souris par rapport au widget récepteur. « globalPos » correspond à la position de la souris en coordonnées absolues. « modifiers » contient les modificateurs du clavier.
[protected delete] QContextMenuEvent::QContextMenuEvent(QContextMenuEvent &&)
Crée par « move » une instance de ` QContextMenuEvent`. Cette fonction est supprimée.
const QPoint &QContextMenuEvent::globalPos() const
Renvoie la position globale du pointeur de la souris au moment de l'événement.
Voir également x(), y() et pos().
int QContextMenuEvent::globalX() const
Renvoie la position x globale du pointeur de la souris au moment de l'événement.
Voir également globalY() et globalPos().
int QContextMenuEvent::globalY() const
Renvoie la position y globale du pointeur de la souris au moment de l'événement.
Voir également globalX() et globalPos().
const QPoint &QContextMenuEvent::pos() const
Renvoie la position du pointeur de la souris par rapport au widget qui a reçu l'événement.
Remarque : si l'QContextMenuEvent e ne provient pas du bouton droit de la souris, la valeur de ` pos() ` peut être ` null`.
Voir également x(), y() et globalPos().
QContextMenuEvent::Reason QContextMenuEvent::reason() const
Renvoie la raison de cet événement de contexte.
int QContextMenuEvent::x() const
Renvoie la position x du pointeur de la souris, par rapport au widget qui a reçu l'événement.
int QContextMenuEvent::y() const
Renvoie la position en y du pointeur de la souris, par rapport au widget qui a reçu l'événement.
[protected delete] QContextMenuEvent &QContextMenuEvent::operator=(QContextMenuEvent &&)
La fonction « Move-assigns » attribue « other » à cette instance « QContextMenuEvent ». Cette fonction est supprimée.
[noexcept protected default] QContextMenuEvent &QContextMenuEvent::operator=(const QContextMenuEvent &other)
Attribue par copie l'other à cette instance d'QContextMenuEvent.
© 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.