Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
QContextMenuEvent Class Reference

The QContextMenuEvent class contains parameters that describe a context menu event. More...

#include <qevent.h>

Inheritance diagram for QContextMenuEvent:
Collaboration diagram for QContextMenuEvent:

Public Types

enum  Reason { Mouse , Keyboard , Other }
 This enum describes the reason why the event was sent. More...
Public Types inherited from QEvent
enum  Type {
  None = 0 , Timer = 1 , MouseButtonPress = 2 , MouseButtonRelease = 3 ,
  MouseButtonDblClick = 4 , MouseMove = 5 , KeyPress = 6 , KeyRelease = 7 ,
  FocusIn = 8 , FocusOut = 9 , FocusAboutToChange = 23 , Enter = 10 ,
  Leave = 11 , Paint = 12 , Move = 13 , Resize = 14 ,
  Create = 15 , Destroy = 16 , Show = 17 , Hide = 18 ,
  Close = 19 , Quit = 20 , ParentChange = 21 , ParentAboutToChange = 131 ,
  ThreadChange = 22 , WindowActivate = 24 , WindowDeactivate = 25 , ShowToParent = 26 ,
  HideToParent = 27 , Wheel = 31 , WindowTitleChange = 33 , WindowIconChange = 34 ,
  ApplicationWindowIconChange = 35 , ApplicationFontChange = 36 , ApplicationLayoutDirectionChange = 37 , ApplicationPaletteChange = 38 ,
  PaletteChange = 39 , Clipboard = 40 , Speech = 42 , MetaCall = 43 ,
  SockAct = 50 , WinEventAct = 132 , DeferredDelete = 52 , DragEnter = 60 ,
  DragMove = 61 , DragLeave = 62 , Drop = 63 , DragResponse = 64 ,
  ChildAdded = 68 , ChildPolished = 69 , ChildRemoved = 71 , ShowWindowRequest = 73 ,
  PolishRequest = 74 , Polish = 75 , LayoutRequest = 76 , UpdateRequest = 77 ,
  UpdateLater = 78 , EmbeddingControl = 79 , ActivateControl = 80 , DeactivateControl = 81 ,
  ContextMenu = 82 , InputMethod = 83 , TabletMove = 87 , LocaleChange = 88 ,
  LanguageChange = 89 , LayoutDirectionChange = 90 , Style = 91 , TabletPress = 92 ,
  TabletRelease = 93 , OkRequest = 94 , HelpRequest = 95 , IconDrag = 96 ,
  FontChange = 97 , EnabledChange = 98 , ActivationChange = 99 , StyleChange = 100 ,
  IconTextChange = 101 , ModifiedChange = 102 , MouseTrackingChange = 109 , WindowBlocked = 103 ,
  WindowUnblocked = 104 , WindowStateChange = 105 , ReadOnlyChange = 106 , ToolTip = 110 ,
  WhatsThis = 111 , StatusTip = 112 , ActionChanged = 113 , ActionAdded = 114 ,
  ActionRemoved = 115 , FileOpen = 116 , Shortcut = 117 , ShortcutOverride = 51 ,
  WhatsThisClicked = 118 , ToolBarChange = 120 , ApplicationActivate = 121 , ApplicationActivated = ApplicationActivate ,
  ApplicationDeactivate = 122 , ApplicationDeactivated = ApplicationDeactivate , QueryWhatsThis = 123 , EnterWhatsThisMode = 124 ,
  LeaveWhatsThisMode = 125 , ZOrderChange = 126 , HoverEnter = 127 , HoverLeave = 128 ,
  HoverMove = 129 , AcceptDropsChange = 152 , ZeroTimerEvent = 154 , GraphicsSceneMouseMove = 155 ,
  GraphicsSceneMousePress = 156 , GraphicsSceneMouseRelease = 157 , GraphicsSceneMouseDoubleClick = 158 , GraphicsSceneContextMenu = 159 ,
  GraphicsSceneHoverEnter = 160 , GraphicsSceneHoverMove = 161 , GraphicsSceneHoverLeave = 162 , GraphicsSceneHelp = 163 ,
  GraphicsSceneDragEnter = 164 , GraphicsSceneDragMove = 165 , GraphicsSceneDragLeave = 166 , GraphicsSceneDrop = 167 ,
  GraphicsSceneWheel = 168 , GraphicsSceneLeave = 220 , KeyboardLayoutChange = 169 , DynamicPropertyChange = 170 ,
  TabletEnterProximity = 171 , TabletLeaveProximity = 172 , NonClientAreaMouseMove = 173 , NonClientAreaMouseButtonPress = 174 ,
  NonClientAreaMouseButtonRelease = 175 , NonClientAreaMouseButtonDblClick = 176 , MacSizeChange = 177 , ContentsRectChange = 178 ,
  MacGLWindowChange = 179 , FutureCallOut = 180 , GraphicsSceneResize = 181 , GraphicsSceneMove = 182 ,
  CursorChange = 183 , ToolTipChange = 184 , NetworkReplyUpdated = 185 , GrabMouse = 186 ,
  UngrabMouse = 187 , GrabKeyboard = 188 , UngrabKeyboard = 189 , StateMachineSignal = 192 ,
  StateMachineWrapped = 193 , TouchBegin = 194 , TouchUpdate = 195 , TouchEnd = 196 ,
  NativeGesture = 197 , RequestSoftwareInputPanel = 199 , CloseSoftwareInputPanel = 200 , WinIdChange = 203 ,
  Gesture = 198 , GestureOverride = 202 , ScrollPrepare = 204 , Scroll = 205 ,
  Expose = 206 , InputMethodQuery = 207 , OrientationChange = 208 , TouchCancel = 209 ,
  ThemeChange = 210 , SockClose = 211 , PlatformPanel = 212 , StyleAnimationUpdate = 213 ,
  ApplicationStateChange = 214 , WindowChangeInternal = 215 , ScreenChangeInternal = 216 , PlatformSurface = 217 ,
  Pointer = 218 , TabletTrackingChange = 219 , WindowAboutToChangeInternal = 221 , DevicePixelRatioChange = 222 ,
  ChildWindowAdded = 223 , ChildWindowRemoved = 224 , ParentWindowAboutToChange = 225 , ParentWindowChange = 226 ,
  SafeAreaMarginsChange = 227 , User = 1000 , MaxUser = 65535
}
 This enum type defines the valid event types in Qt. More...

Public Member Functions

 QContextMenuEvent (Reason reason, const QPoint &pos, const QPoint &globalPos, Qt::KeyboardModifiers modifiers=Qt::NoModifier)
 Constructs a context menu event object with the accept parameter flag set to false.
int x () const
 Returns the x position of the mouse pointer, relative to the widget that received the event.
int y () const
 Returns the y position of the mouse pointer, relative to the widget that received the event.
int globalX () const
 Returns the global x position of the mouse pointer at the time of the event.
int globalY () const
 Returns the global y position of the mouse pointer at the time of the event.
const QPointpos () const
 Returns the position of the mouse pointer relative to the widget that received the event.
const QPointglobalPos () const
 Returns the global position of the mouse pointer at the time of the event.
Reason reason () const
 Returns the reason for this context event.
Public Member Functions inherited from QInputEvent
 QInputEvent (Type type, const QInputDevice *m_dev, Qt::KeyboardModifiers modifiers=Qt::NoModifier)
const QInputDevicedevice () const
QInputDevice::DeviceType deviceType () const
 Returns the type of device that generated the event.
Qt::KeyboardModifiers modifiers () const
 Returns the keyboard modifier flags that existed immediately before the event occurred.
void setModifiers (Qt::KeyboardModifiers modifiers)
quint64 timestamp () const
 Returns the window system's timestamp for this event.
virtual void setTimestamp (quint64 timestamp)
Public Member Functions inherited from QEvent
 QEvent (Type type)
 Constructs an event object of type type.
virtual ~QEvent ()
 Destroys the event.
Type type () const
 Returns the event type.
bool spontaneous () const
 Returns true if the event originated outside the application (a system event); otherwise returns false.
virtual void setAccepted (bool accepted)
bool isAccepted () const
void accept ()
 Sets the accept flag of the event object, the equivalent of calling setAccepted(true).
void ignore ()
 Clears the accept flag parameter of the event object, the equivalent of calling setAccepted(false).
bool isInputEvent () const noexcept
bool isPointerEvent () const noexcept
bool isSinglePointEvent () const noexcept
virtual QEventclone () const
 Creates and returns an identical copy of this event.

Protected Attributes

QPoint m_pos
QPoint m_globalPos
uint m_reason: 8
Protected Attributes inherited from QInputEvent
const QInputDevicem_dev = nullptr
quint64 m_timeStamp = 0
Qt::KeyboardModifiers m_modState = Qt::NoModifier
quint32 m_reserved = 0
Protected Attributes inherited from QEvent
quint16 t

Additional Inherited Members

Static Public Member Functions inherited from QEvent
static int registerEventType (int hint=-1) noexcept
Protected Member Functions inherited from QInputEvent
 QInputEvent (Type type, PointerEventTag, const QInputDevice *dev, Qt::KeyboardModifiers modifiers=Qt::NoModifier)
 QInputEvent (Type type, SinglePointEventTag, const QInputDevice *dev, Qt::KeyboardModifiers modifiers=Qt::NoModifier)
Protected Member Functions inherited from QEvent
 QT_DEFINE_TAG_STRUCT (InputEventTag)
 QEvent (Type type, InputEventTag)
 QT_DEFINE_TAG_STRUCT (PointerEventTag)
 QEvent (Type type, PointerEventTag)
 QT_DEFINE_TAG_STRUCT (SinglePointEventTag)
 QEvent (Type type, SinglePointEventTag)

Detailed Description

The QContextMenuEvent class contains parameters that describe a context menu event.

\inmodule QtGui

A context menu event is sent when a user performs an action that should open a contextual menu: \list

  • clicking the right mouse button
  • pressing a dedicated keyboard menu key (if the keyboard has one, such as the menu key on standard 104-key PC keyboards)
  • pressing some other keyboard shortcut (such as "Ctrl+Return" by default on macOS 15 and newer) \endlist

The expected context menu should contain \l {QAction}{actions} that are relevant to some content within the application (the "context"). In Qt, the context is at least the particular \l {QWidget}{widget} or Qt Quick \l Item that receives the QContextMenuEvent. If there is a selection, that should probably be treated as the context. The context can be further refined using \l QContextMenuEvent::pos() to pinpoint the content within the widget, item or selection.

Widgets can override \l QWidget::contextMenuEvent() to handle this event. Many widgets already do that, and have useful context menus by default. Some widgets have a function such as \l {QLineEdit::createStandardContextMenu()}{createStandardContextMenu()} to populate the default set of actions into a \l QMenu, which can be customized further in your subclass and then shown.

In Qt Quick, the event can be handled via the \l {QtQuick.Controls::}{ContextMenu} attached property. Some \l {QtQuick.Controls} Controls already provide context menus by default.

Unlike most synthetic events (such as a QMouseEvent that is sent only after a QTouchEvent or QTabletEvent was not accepted), QContextMenuEvent is sent regardless of whether the original mouse or key event was already handled and \l {QEvent::isAccepted()}{accepted}. This is to accommodate the Windows UI pattern of selecting some kind of items (icons, drawing elements, or cells in an Item View) using the right mouse button (clicking or dragging), and then getting a context menu as soon as you release the right mouse button. (The actions on the menu are meant to apply to the selection.) Therefore, on Windows the QContextMenuEvent is sent on mouse release; while on other platforms, it's sent on press. Qt follows the \l {QStyleHints::contextMenuTrigger()}{platform convention} by default.

There are also some Qt Quick Controls such as \l {QtQuick.Controls::}{Pane} that accept mouse events, and nevertheless receive a QContextMenuEvent after a mouse press or click.

If you prefer to support the press-drag-release UI pattern to open a context menu on press, and drag over a menu item to select it on release, you will need to do that by handling \l {QMouseEvent}{QMouseEvents} directly (by overriding \l {QWidget::mousePressEvent()}{virtual functions} in QWidget subclasses, or using \l TapHandler to open a \l Menu in Qt Quick); and then the QContextMenuEvent will be redundant when the \l reason() is Mouse. You should \l ignore() the event in that case; but you should still ensure that the widget, custom control or application can respond to a QContextMenuEvent that \l {reason()}{comes from} the platform-specific keyboard shortcut.

When a QContextMenuEvent is \l {ignore()}{ignored}, Qt attempts to deliver it to other widgets and/or Items under the \l {pos()}{position} (which is usually translated from the cursor position).

Definition at line 596 of file qevent.h.

Member Enumeration Documentation

◆ Reason

This enum describes the reason why the event was sent.

\value Mouse The mouse caused the event to be sent. Normally this means the right mouse button was clicked, but this is platform dependent.

\value Keyboard The keyboard caused this event to be sent. On Windows, this means the menu button was pressed.

\value Other The event was sent by some other means (i.e. not by the mouse or keyboard).

Enumerator
Mouse 
Keyboard 
Other 

Definition at line 600 of file qevent.h.

Constructor & Destructor Documentation

◆ QContextMenuEvent()

QContextMenuEvent::QContextMenuEvent ( Reason reason,
const QPoint & pos,
const QPoint & globalPos,
Qt::KeyboardModifiers modifiers = Qt::NoModifier )

Constructs a context menu event object with the accept parameter flag set to false.

The reason parameter must be QContextMenuEvent::Mouse or QContextMenuEvent::Keyboard.

The pos parameter specifies the mouse position relative to the receiving widget. globalPos is the mouse position in absolute coordinates. The modifiers holds the keyboard modifiers.

Definition at line 2059 of file qevent.cpp.

Member Function Documentation

◆ globalPos()

const QPoint & QContextMenuEvent::globalPos ( ) const
inline

Returns the global position of the mouse pointer at the time of the event.

See also
x(), y(), pos()

Definition at line 615 of file qevent.h.

◆ globalX()

int QContextMenuEvent::globalX ( ) const
inline

Returns the global x position of the mouse pointer at the time of the event.

See also
globalY(), globalPos()

Definition at line 611 of file qevent.h.

◆ globalY()

int QContextMenuEvent::globalY ( ) const
inline

Returns the global y position of the mouse pointer at the time of the event.

See also
globalX(), globalPos()

Definition at line 612 of file qevent.h.

◆ pos()

const QPoint & QContextMenuEvent::pos ( ) const
inline

Returns the position of the mouse pointer relative to the widget that received the event.

Note
If the QContextMenuEvent did not come from the right mouse button, pos() may be \l {QPoint::isNull()}{null}.
See also
x(), y(), globalPos()

Definition at line 614 of file qevent.h.

◆ reason()

Reason QContextMenuEvent::reason ( ) const
inline

Returns the reason for this context event.

Definition at line 617 of file qevent.h.

◆ x()

int QContextMenuEvent::x ( ) const
inline

Returns the x position of the mouse pointer, relative to the widget that received the event.

See also
y(), pos()

Definition at line 609 of file qevent.h.

◆ y()

int QContextMenuEvent::y ( ) const
inline

Returns the y position of the mouse pointer, relative to the widget that received the event.

See also
x(), pos()

Definition at line 610 of file qevent.h.

Member Data Documentation

◆ m_globalPos

QPoint QContextMenuEvent::m_globalPos
protected

Definition at line 621 of file qevent.h.

◆ m_pos

QPoint QContextMenuEvent::m_pos
protected

Definition at line 620 of file qevent.h.

◆ m_reason

uint QContextMenuEvent::m_reason
protected

Definition at line 622 of file qevent.h.


The documentation for this class was generated from the following files: