Mausereignisse
Eine modernere Methode zur Verarbeitung von Ereignissen aller Zeigegeräte, einschließlich Maus und Touchscreen, sind Eingabehandler. Diese Seite beschreibt den ursprünglichen Typ „ Qt Quick “ ( MouseArea ), der ursprünglich für die Verarbeitung von Mauseingaben konzipiert wurde und später auch Single-Touch-Ereignisse (in Form von synthetischen Mausereignissen) in einfachen, touchorientierten Benutzeroberflächen verarbeiten konnte.
Maus-Typen
- MouseArea Typ
- MouseEvent Objekt
Verarbeitung von Mausereignissen
QML nutzt Signale und Handler, um Mausinteraktionen zu vermitteln. Konkret stellt „ Qt Quick “ die Typen „ MouseArea “ und „ MouseEvent “ bereit, mit denen Entwickler JavaScript-Callbacks (auch Signal-Handler genannt) definieren können, die Mausereignisse innerhalb eines definierten Bereichs empfangen.
Definieren eines Mausbereichs
Der Typ „ MouseArea “ empfängt Ereignisse innerhalb eines definierten Bereichs. Eine schnelle Möglichkeit, diesen Bereich zu definieren, besteht darin, den „ MouseArea “ mithilfe der Eigenschaft „ anchors.fill “ an den Bereich seines übergeordneten Elements zu verankern. Ist das übergeordnete Element ein „ Rectangle “ (oder eine beliebige „ Item “-Komponente), füllt der „ MouseArea “ den durch die Abmessungen des übergeordneten Elements definierten Bereich aus. Alternativ lässt sich ein Bereich definieren, der kleiner oder größer als der des übergeordneten Elements ist.
Rectangle {
id: button
width: 100; height: 100
MouseArea {
anchors.fill: parent
onClicked: console.log("button clicked")
}
MouseArea {
width:150; height: 75
onClicked: console.log("irregular area clicked")
}
}Empfangen von Ereignissen
Der Typ „ MouseArea “ sendet Signale als Reaktion auf verschiedene Mausereignisse aus. Die Dokumentation zum Typ „ MouseArea “ beschreibt diese Gesten ausführlicher:
- abgebrochen
- clicked
- doubleClicked
- entered
- verlassen
- Position geändert
- gedrückt und gehalten
- gedrückt
- gelöst
Diese Signale können Callbacks haben, die aufgerufen werden, wenn die Signale ausgesendet werden.
MouseArea {
anchors.fill: parent
onClicked: console.log("area clicked")
onDoubleClicked: console.log("area double clicked")
onEntered: console.log("mouse entered the area")
onExited: console.log("mouse left the area")
}Gesten aktivieren
Einige Mausgesten und Mausklicks müssen aktiviert werden, bevor sie Ereignisse senden oder empfangen können. Bestimmte Eigenschaften von „ MouseArea “ und „ MouseEvent “ aktivieren diese Gesten.
Um eine bestimmte Maustaste zu überwachen (oder explizit zu ignorieren), legen Sie die entsprechende Maustaste in der Eigenschaft „ acceptedButtons “ fest.
Natürlich werden die Mausereignisse, wie z. B. Tastenbetätigungen und Mauspositionen, während eines Mausklicks gesendet. Beispielsweise liefert die Eigenschaft „ containsMouse “ nur während einer Maustastebetätigung den korrekten Wert. Die Eigenschaft „ hoverEnabled “ aktiviert Mausereignisse und Positionsdaten auch dann, wenn keine Maustasten betätigt werden. Das Setzen der Eigenschaft „ hoverEnabled “ auf „ true “ aktiviert wiederum die Signale „ entered “, „ exited “ und „ positionChanged “ sowie deren jeweilige Signal-Handler.
MouseArea {
hoverEnabled: true
acceptedButtons: Qt.LeftButton | Qt.RightButton
onEntered: console.log("mouse entered the area")
onExited: console.log("mouse left the area")
}Um den gesamten Mausbereich zu deaktivieren, setzen Sie außerdem die Eigenschaft „ MouseArea “ ( enabled ) auf „ false “.
MouseEvent-Objekt
Signale und ihre Callbacks erhalten ein „ MouseEvent “-Objekt als Parameter. Das „ mouse “-Objekt enthält Informationen zum Mausereignis. Beispielsweise wird die Maustaste, die das Ereignis ausgelöst hat, über die Eigenschaft „ mouse.button “ abgefragt.
Das „ MouseEvent “-Objekt kann ein Mausereignis auch mithilfe seiner Eigenschaft „ accepted “ ignorieren.
Weitere Signale akzeptieren
Viele der Signale werden mehrfach gesendet, um verschiedene Mausereignisse wie beispielsweise Doppelklicks widerzuspiegeln. Um die Klassifizierung von Mausklicks zu erleichtern, verfügt das Objekt „ MouseEvent “ über die Eigenschaft „ accepted “, mit der die Weiterleitung des Ereignisses deaktiviert werden kann.
Weitere Informationen zum QML-Ereignissystem finden Sie im Dokument „Signale und Handler sowie das Ereignissystem “.
© 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.