QContextMenuEvent Class
Die Klasse `QContextMenuEvent` enthält Parameter, die ein Kontextmenü-Ereignis beschreiben. Mehr...
| Header: | #include <QContextMenuEvent> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| Erbt von: | QInputEvent |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- Veraltete Mitglieder
- QContextMenuEvent ist Teil der Ereignisklassen.
Ö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 |
Geschützte Funktionen
| QContextMenuEvent(QContextMenuEvent &&) | |
| QContextMenuEvent & | operator=(QContextMenuEvent &&) |
| QContextMenuEvent & | operator=(const QContextMenuEvent &other) |
Ausführliche Beschreibung
Ein Kontextmenü-Ereignis wird ausgelöst, wenn ein Benutzer eine Aktion ausführt, die ein Kontextmenü öffnen soll:
- Klicken mit der rechten Maustaste
- Drücken einer speziellen Menütaste auf der Tastatur (sofern die Tastatur über eine solche verfügt, wie z. B. die Menütaste auf Standard-PC-Tastaturen mit 104 Tasten)
- Drücken einer anderen Tastenkombination (z. B. standardmäßig „Strg+Return“ unter macOS 15 und neuer)
Das erwartete Kontextmenü sollte „ actions “ enthalten, die für bestimmte Inhalte innerhalb der Anwendung (den „Kontext“) relevant sind. In Qt ist der Kontext mindestens das jeweilige „ widget “ oder „ Qt Quick “ Item, das das „QContextMenuEvent“ empfängt. Liegt eine Auswahl vor, sollte diese wahrscheinlich als Kontext behandelt werden. Der Kontext kann mithilfe von „ QContextMenuEvent::pos “ () weiter verfeinert werden, um den Inhalt innerhalb des Widgets, des Elements oder der Auswahl genau zu bestimmen.
Widgets können die Methode ` QWidget::contextMenuEvent()` überschreiben, um dieses Ereignis zu verarbeiten. Viele Widgets tun dies bereits und verfügen standardmäßig über nützliche Kontextmenüs. Einige Widgets verfügen über eine Funktion wie ` createStandardContextMenu()`, um den Standard-Aktionssatz in ein ` QMenu` zu übertragen, das in Ihrer Unterklasse weiter angepasst und anschließend angezeigt werden kann.
In ` Qt Quick` kann das Ereignis über die angehängte Eigenschaft ` ContextMenu ` verarbeitet werden. Einige ` QtQuick.Controls `-Steuerelemente bieten bereits standardmäßig Kontextmenüs an.
Im Gegensatz zu den meisten synthetischen Ereignissen (wie z. B. einem „ QMouseEvent “, das erst gesendet wird, nachdem ein „ QTouchEvent “ oder „ QTabletEvent “ nicht akzeptiert wurde) wird „QContextMenuEvent“ unabhängig davon gesendet, ob das ursprüngliche Maus- oder Tastenereignis bereits verarbeitet wurde und „ accepted “ aufgerufen wurde. Dies dient dazu, dem Windows-UI-Muster Rechnung zu tragen, bei dem bestimmte Elemente (Symbole, Zeichenelemente oder Zellen in einer Item-Ansicht) mit der rechten Maustaste (durch Klicken oder Ziehen) ausgewählt werden und dann ein Kontextmenü erscheint, sobald die rechte Maustaste losgelassen wird. (Die Aktionen im Menü sollen auf die Auswahl angewendet werden.) Daher wird unter Windows das `QContextMenuEvent` beim Loslassen der Maustaste gesendet, während es auf anderen Plattformen beim Drücken gesendet wird. Qt folgt standardmäßig dem „ platform convention “.
Es gibt auch einige „ Qt Quick Controls “ wie beispielsweise „ Pane “, die Mausereignisse akzeptieren und dennoch nach einem Mausdruck oder -klick ein „QContextMenuEvent“ empfangen.
Wenn Sie das UI-Muster „Drücken-Ziehen-Loslassen“ unterstützen möchten, bei dem ein Kontextmenü beim Drücken geöffnet und ein Menüelement durch Ziehen über den Eintrag beim Loslassen ausgewählt wird, müssen Sie dies durch direkte Behandlung von „ QMouseEvents “ umsetzen (indem Sie „ virtual functions “ in Unterklassen von „ QWidget “ überschreiben oder „ TapHandler “ verwenden, um ein „ Menu “ in „ Qt Quick “ zu öffnen); und dann ist das `QContextMenuEvent` überflüssig, wenn ` reason()` auf ` Mouse` gesetzt ist. In diesem Fall sollten Sie das Ereignis mit ` ignore()` abfangen; Sie sollten jedoch weiterhin sicherstellen, dass das Widget, das benutzerdefinierte Steuerelement oder die Anwendung auf ein `QContextMenuEvent` reagieren kann, das ` comes from ` den plattformspezifischen Tastaturbefehl enthält.
Wenn ein `QContextMenuEvent` als ` ignored` gekennzeichnet ist, versucht Qt, es an andere Widgets und/oder Elemente unterhalb des „ position “ (der in der Regel aus der Cursorposition abgeleitet wird) weiterzuleiten.
Dokumentation zum Mitgliedstyp
enum QContextMenuEvent::Reason
Diese Enumeration beschreibt den Grund, aus dem das Ereignis gesendet wurde.
| Konstante | Wert | Beschreibung |
|---|---|---|
QContextMenuEvent::Mouse | 0 | Die Maus hat das Senden des Ereignisses ausgelöst. Normalerweise bedeutet dies, dass die rechte Maustaste gedrückt wurde, dies ist jedoch plattformabhängig. |
QContextMenuEvent::Keyboard | 1 | Die Tastatur hat das Senden dieses Ereignisses ausgelöst. Unter Windows bedeutet dies, dass die Menütaste gedrückt wurde. |
QContextMenuEvent::Other | 2 | Das Ereignis wurde auf andere Weise ausgelöst (d. h. nicht durch die Maus oder die Tastatur). |
Dokumentation der Member-Funktionen
QContextMenuEvent::QContextMenuEvent(QContextMenuEvent::Reason reason, const QPoint &pos, const QPoint &globalPos, Qt::KeyboardModifiers modifiers = Qt::NoModifier)
Erstellt ein Kontextmenü-Ereignisobjekt, bei dem das Flag „accept“ auf „false“ gesetzt ist.
Der Parameter „ reason “ muss entweder „ QContextMenuEvent::Mouse “ oder „ QContextMenuEvent::Keyboard “ lauten.
Der Parameter „ pos “ gibt die Mausposition relativ zum empfangenden Widget an. „ globalPos “ ist die Mausposition in absoluten Koordinaten. „ modifiers “ enthält die Tastaturmodifikatoren.
[protected delete] QContextMenuEvent::QContextMenuEvent(QContextMenuEvent &&)
Erstellt eine Instanz von ` QContextMenuEvent`. Diese Funktion wurde gelöscht.
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 das Ereignis „ QContextMenuEvent “ nicht von der rechten Maustaste stammt, kann „ pos() “ den Wert „ null “ annehmen.
Siehe auch „ x()“, „ y()“ und „ globalPos()“.
QContextMenuEvent::Reason QContextMenuEvent::reason() const
Gibt den Grund für dieses Kontext-Ereignis zurück.
int QContextMenuEvent::x() const
Gibt die x-Position des Mauszeigers relativ zu dem Widget zurück, das das Ereignis empfangen hat.
int QContextMenuEvent::y() const
Gibt die y-Position des Mauszeigers relativ zu dem Widget zurück, das das Ereignis empfangen hat.
[protected delete] QContextMenuEvent &QContextMenuEvent::operator=(QContextMenuEvent &&)
Weist „ other “ dieser „ QContextMenuEvent “-Instanz zu. Diese Funktion wird gelöscht.
[noexcept protected default] QContextMenuEvent &QContextMenuEvent::operator=(const QContextMenuEvent &other)
other Weist dieser Instanz von „ QContextMenuEvent “ den Wert „ “ zu. “ zu dieser Instanz von „ “ zu.
© 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.