QContextMenuEvent Class

Die Klasse QContextMenuEvent enthält Parameter, die ein Kontextmenüereignis beschreiben. Mehr...

Kopfzeile: #include <QContextMenuEvent>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
Vererbt: QInputEvent

Öffentliche Typen

enum Reason { Mouse, Keyboard, Other }

Öffentliche Funktionen

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

Detaillierte Beschreibung

Ein Kontextmenü-Ereignis wird gesendet, wenn ein Benutzer eine Aktion ausführt, die ein Kontextmenü öffnen soll:

  • Klicken der rechten Maustaste
  • Drücken einer speziellen Menütaste auf der Tastatur (wenn die Tastatur über eine solche verfügt, z. B. die Menütaste auf Standard-PC-Tastaturen mit 104 Tasten)
  • Drücken eines anderen Tastaturkürzels (wie z. B. "Strg+Return" unter macOS 15 und neuer)

Das erwartete Kontextmenü sollte actions enthalten, das für einen Inhalt innerhalb der Anwendung (den "Kontext") relevant ist. In Qt ist der Kontext zumindest die bestimmte widget oder Qt Quick Item , die das QContextMenuEvent empfängt. Wenn es eine Auswahl gibt, sollte diese wahrscheinlich als der Kontext behandelt werden. Der Kontext kann mit QContextMenuEvent::pos() weiter verfeinert werden, um den Inhalt innerhalb des Widgets, des Elements oder der Auswahl festzulegen.

Widgets können QWidget::contextMenuEvent() außer Kraft setzen, um dieses Ereignis zu behandeln. Viele Widgets tun dies bereits, und haben standardmäßig nützliche Kontextmenüs. Einige Widgets verfügen über eine Funktion wie createStandardContextMenu(), um den Standardsatz von Aktionen in eine QMenu einzutragen, die in Ihrer Unterklasse weiter angepasst und dann angezeigt werden kann.

In Qt Quick kann das Ereignis über die Eigenschaft ContextMenu attached behandelt werden. Einige QtQuick.Controls Controls bieten bereits standardmäßig Kontextmenüs an.

Im Gegensatz zu den meisten synthetischen Ereignissen (wie z.B. ein QMouseEvent, das nur gesendet wird, nachdem ein QTouchEvent oder QTabletEvent nicht akzeptiert wurde), wird QContextMenuEvent unabhängig davon gesendet, ob das ursprüngliche Maus- oder Tastenereignis bereits behandelt wurde und accepted. Damit wird dem Windows UI-Muster Rechnung getragen, wonach eine Art von Elementen (Symbole, Zeichenelemente oder Zellen in einer Elementansicht) mit der rechten Maustaste ausgewählt wird (Klicken oder Ziehen) und dann ein Kontextmenü angezeigt wird, sobald Sie die rechte Maustaste loslassen. (Die Aktionen im Menü sollen sich auf die Auswahl beziehen.) Daher wird unter Windows das QContextMenuEvent beim Loslassen der Maus gesendet, während es auf anderen Plattformen beim Drücken gesendet wird. Qt folgt standardmäßig der platform convention.

Es gibt auch einige Qt Quick Controls wie z.B. Pane, die Mausereignisse akzeptieren und trotzdem ein QContextMenuEvent nach einem Mausdruck oder -klick empfangen.

Wenn Sie es vorziehen, das UI-Muster Drücken-Ziehen-Loslassen zu unterstützen, um ein Kontextmenü beim Drücken zu öffnen und über einen Menüpunkt zu ziehen, um ihn beim Loslassen auszuwählen, müssen Sie das tun, indem Sie QMouseEvents direkt behandeln (indem Sie virtual functions in QWidget Unterklassen überschreiben oder TapHandler verwenden, um ein Menü in Qt Quick zu öffnen); und dann wird das QContextMenuEvent überflüssig, wenn das reason() Mouse ist. Sie sollten ignore() das Ereignis in diesem Fall; aber Sie sollten dennoch sicherstellen, dass das Widget, das benutzerdefinierte Steuerelement oder die Anwendung auf ein QContextMenuEvent reagieren kann, das comes from die plattformspezifische Tastenkombination.

Wenn ein QContextMenuEvent ignored ist, versucht Qt, es an andere Widgets und/oder Elemente unter der position (die normalerweise von der Cursorposition aus übersetzt wird) weiterzuleiten.

Member-Typ Dokumentation

enum QContextMenuEvent::Reason

Diese Aufzählung beschreibt den Grund, warum das Ereignis gesendet wurde.

KonstanteWertBeschreibung
QContextMenuEvent::Mouse0Die Maus hat das Ereignis ausgelöst. Normalerweise bedeutet dies, dass die rechte Maustaste geklickt wurde, aber dies ist plattformabhängig.
QContextMenuEvent::Keyboard1Die Tastatur hat dieses Ereignis ausgelöst. Unter Windows bedeutet dies, dass die Menütaste gedrückt wurde.
QContextMenuEvent::Other2Das Ereignis wurde auf andere Weise gesendet (d.h. nicht durch die Maus oder die Tastatur).

Dokumentation der Mitgliedsfunktionen

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

Konstruiert ein Kontextmenü-Ereignisobjekt, bei dem das Kennzeichen für den Parameter accept auf false gesetzt ist.

Der Parameter reason muss QContextMenuEvent::Mouse oder QContextMenuEvent::Keyboard sein.

Der Parameter pos gibt die Mausposition relativ zum empfangenden Widget an. globalPos ist die Mausposition in absoluten Koordinaten. Der Parameter modifiers enthält die Tastaturmodifikatoren.

const QPoint &QContextMenuEvent::globalPos() const

Gibt die globale Position des Mauszeigers zum Zeitpunkt des Ereignisses zurück.

Siehe auch x(), y(), und pos().

int QContextMenuEvent::globalX() const

Gibt die globale x-Position des Mauszeigers zum Zeitpunkt des Ereignisses zurück.

Siehe auch globalY() und globalPos().

int QContextMenuEvent::globalY() const

Gibt die globale y-Position des Mauszeigers zum Zeitpunkt des Ereignisses zurück.

Siehe auch globalX() und globalPos().

const QPoint &QContextMenuEvent::pos() const

Gibt die Position des Mauszeigers relativ zu dem Widget zurück, das das Ereignis empfangen hat.

Hinweis: Wenn QContextMenuEvent nicht von der rechten Maustaste kam, kann pos() zu null werden.

Siehe auch x(), y(), und globalPos().

QContextMenuEvent::Reason QContextMenuEvent::reason() const

Gibt den Grund für dieses Kontextereignis zurück.

int QContextMenuEvent::x() const

Gibt die x-Position des Mauszeigers zurück, relativ zu dem Widget, das das Ereignis empfangen hat.

Siehe auch y() und pos().

int QContextMenuEvent::y() const

Gibt die y-Position des Mauszeigers zurück, relativ zu dem Widget, das das Ereignis empfangen hat.

Siehe auch x() und pos().

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