Auf dieser Seite

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

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.