QContextMenuEvent Class
La clase QContextMenuEvent contiene parámetros que describen un evento de menú contextual. Más...
| Cabecera: | #include <QContextMenuEvent> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui)target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| Hereda: | QInputEvent |
- Lista de todos los miembros, incluidos los heredados
- Miembros obsoletos
- QContextMenuEvent es parte de Clases de Eventos.
Tipos Públicos
| enum | Reason { Mouse, Keyboard, Other } |
Funciones Públicas
| 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 |
Descripción Detallada
Un evento de menú contextual se envía cuando un usuario realiza una acción que debería abrir un menú contextual:
- pulsando el botón derecho del ratón
- pulsando una tecla de menú dedicada del teclado (si el teclado tiene una, como la tecla de menú en los teclados PC estándar de 104 teclas)
- pulsando algún otro atajo de teclado (como "Ctrl+Return" por defecto en macOS 15 y posteriores)
El menú contextual esperado debería contener actions que son relevantes para algún contenido dentro de la aplicación (el "contexto"). En Qt, el contexto es al menos el widget o Qt Quick Item particular que recibe el QContextMenuEvent. Si hay una selección, probablemente debería ser tratada como el contexto. El contexto se puede refinar aún más utilizando QContextMenuEvent::pos() para señalar el contenido dentro del widget, elemento o selección.
Los widgets pueden anular QWidget::contextMenuEvent() para manejar este evento. Muchos widgets ya lo hacen, y tienen útiles menús contextuales por defecto. Algunos widgets tienen una función como createStandardContextMenu() para rellenar el conjunto de acciones por defecto en un QMenu, que puede personalizarse más en tu subclase y luego mostrarse.
En Qt Quick, el evento puede ser manejado a través de la propiedad adjunta ContextMenu. Algunos controles de QtQuick.Controls ya proporcionan menús contextuales por defecto.
A diferencia de la mayoría de los eventos sintéticos (como un QMouseEvent que se envía sólo después de que un QTouchEvent o QTabletEvent no fue aceptado), QContextMenuEvent se envía independientemente de si el evento original de ratón o tecla ya fue manejado y accepted. Esto es para acomodar el patrón de Windows UI de seleccionar algún tipo de ítems (iconos, elementos de dibujo, o celdas en una Vista de Ítems) usando el botón derecho del ratón (haciendo click o arrastrando), y luego obtener un menú contextual tan pronto como se suelta el botón derecho del ratón. (Las acciones del menú se aplican a la selección.) Por lo tanto, en Windows el QContextMenuEvent se envía al soltar el ratón; mientras que en otras plataformas, se envía al pulsarlo. Qt sigue el platform convention por defecto.
También hay algunos Qt Quick Controls como Pane que aceptan eventos del ratón, y sin embargo reciben un QContextMenuEvent después de una pulsación o clic del ratón.
Si prefieres soportar el patrón UI pulsar-arrastrar-soltar para abrir un menú contextual al pulsar, y arrastrar sobre un elemento de menú para seleccionarlo al soltar, tendrás que hacerlo manejando QMouseEvents directamente (anulando virtual functions en subclases de QWidget, o usando TapHandler para abrir un Menu en Qt Quick); y entonces el QContextMenuEvent será redundante cuando el reason() sea Mouse. Deberías ignore() el evento en ese caso; pero aún así deberías asegurarte de que el widget, control personalizado o aplicación puede responder a un QContextMenuEvent que comes from el atajo de teclado específico de la plataforma.
Cuando un QContextMenuEvent es ignored, Qt intenta entregarlo a otros widgets y/o Items bajo el position (que normalmente se traduce desde la posición del cursor).
Documentación de Tipos de Miembros
enum QContextMenuEvent::Reason
Este enum describe la razón por la que se envió el evento.
| Constante | Valor | Descripción |
|---|---|---|
QContextMenuEvent::Mouse | 0 | El ratón causó el envío del evento. Normalmente esto significa que se pulsó el botón derecho del ratón, pero depende de la plataforma. |
QContextMenuEvent::Keyboard | 1 | El teclado causó el envío de este evento. En Windows, significa que se ha pulsado el botón de menú. |
QContextMenuEvent::Other | 2 | El evento fue enviado por algún otro medio (es decir, no por el ratón o el teclado). |
Documentación de las funciones miembro
QContextMenuEvent::QContextMenuEvent(QContextMenuEvent::Reason reason, const QPoint &pos, const QPoint &globalPos, Qt::KeyboardModifiers modifiers = Qt::NoModifier)
Construye un objeto de evento de menú contextual con el indicador del parámetro accept puesto a false.
El parámetro reason debe ser QContextMenuEvent::Mouse o QContextMenuEvent::Keyboard.
El parámetro pos especifica la posición del ratón relativa al widget receptor. globalPos es la posición del ratón en coordenadas absolutas. El parámetro modifiers contiene los modificadores de teclado.
const QPoint &QContextMenuEvent::globalPos() const
Devuelve la posición global del puntero del ratón en el momento del evento.
Véase también x(), y() y pos().
int QContextMenuEvent::globalX() const
Devuelve la posición global x del puntero del ratón en el momento del evento.
Véase también globalY() y globalPos().
int QContextMenuEvent::globalY() const
Devuelve la posición y global del puntero del ratón en el momento del evento.
Véase también globalX() y globalPos().
const QPoint &QContextMenuEvent::pos() const
Devuelve la posición del puntero del ratón relativa al widget que recibió el evento.
Nota: Si el QContextMenuEvent no proviene del botón derecho del ratón, pos() puede ser null.
Véase también x(), y(), y globalPos().
QContextMenuEvent::Reason QContextMenuEvent::reason() const
Devuelve el motivo de este evento de contexto.
int QContextMenuEvent::x() const
Devuelve la posición x del puntero del ratón, relativa al widget que recibió el evento.
int QContextMenuEvent::y() const
Devuelve la posición y del puntero del ratón, relativa al widget que recibió el evento.
© 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.