Auf dieser Seite

Verarbeitung von Benutzereingaben

Unterstützte Arten von Benutzereingaben

Das Qt Quick Modul bietet Unterstützung für die gängigsten Arten von Benutzereingaben, darunter Maus- und Touch-Ereignisse, Texteingaben und Tastendruckereignisse. Andere Module bieten Unterstützung für weitere Arten von Benutzereingaben.

Dieser Artikel behandelt die Verarbeitung grundlegender Benutzereingaben. Informationen zu audiovisuellen Eingaben finden Sie in der Qt Multimedia Dokumentation.

Maus- und Touch-Ereignisse

Mithilfe der Eingabe-Handler können QML-Anwendungen Maus- und Touch-Ereignisse verarbeiten. Sie können beispielsweise eine Schaltfläche erstellen, indem Sie ein „ TapHandler “ zu einem „Image“ oder zu einem „ Rectangle “ mit einem darin enthaltenen „ Text “-Objekt hinzufügen. Das „ TapHandler “ reagiert auf Tippen oder Klicken mit jeder Art von Zeigegerät.

import QtQuick

Item {
    id: root

    width: 320
    height: 480

    Rectangle {
        color: "#272822"
        width: 320
        height: 480
    }

    Rectangle {
        id: rectangle
        x: 40
        y: 20
        width: 120
        height: 120
        color: "red"

        TapHandler {
            onTapped: rectangle.width += 10
        }
    }
}

Hinweis: Einige Elementtypen verfügen über eine eigene integrierte Eingabeverarbeitung. Beispielsweise reagiert „ Flickable “ auf das Ziehen mit der Maus, Wischgesten und das Scrollen mit dem Mausrad.

Tastatur- und Schaltflächenereignisse

Tasten- und Tastenanschläge – sei es von Schaltflächen auf einem Gerät, einer Tastatur oder einem Tastenfeld – können alle mithilfe der angehängten Eigenschaft „ Keys “ verarbeitet werden. Diese angehängte Eigenschaft ist bei allen von „ Item “ abgeleiteten Typen verfügbar und arbeitet mit der Eigenschaft „ Item::focus “ zusammen, um zu bestimmen, welcher Typ das Tastenereignis empfängt. Für eine einfache Tastenverarbeitung können Sie den Fokus eines einzelnen „ Item “-Objekts auf „true“ setzen und die gesamte Tastenverarbeitung dort durchführen.

import QtQuick

Item {
    id: root

    width: 320
    height: 480

    Rectangle {
        color: "#272822"
        width: 320
        height: 480
    }

    Rectangle {
        id: rectangle
        x: 40
        y: 20
        width: 120
        height: 120
        color: "red"

        focus: true
        Keys.onUpPressed: rectangle.y -= 10
        Keys.onDownPressed: rectangle.y += 10
        Keys.onLeftPressed: rectangle.x += 10
        Keys.onRightPressed: rectangle.x -= 10
    }
}

Für die Texteingabe stehen mehrere QML-Typen zur Auswahl. „ TextInput “ bietet ein formatierbares einzeiliges Textfeld ohne Formatierung, während „ TextField “ sich besser für Formularfelder in Anwendungen eignet. „ TextEdit “ kann mehrzeiligen bearbeitbaren Text verarbeiten, jedoch ist „ TextArea “ die bessere Alternative, da es Formatierungen hinzufügt.

Der folgende Codeausschnitt veranschaulicht, wie Sie diese Typen in Ihrer Anwendung verwenden können:

import QtQuick
import QtQuick.Controls
import QtQuick.Layouts

ApplicationWindow {
    width: 300
    height: 200
    visible: true

    ColumnLayout {
        anchors.fill: parent
        TextField {
            id: singleline
            text: "Initial Text"
            Layout.alignment: Qt.AlignHCenter | Qt.AlignTop
            Layout.margins: 5
            background: Rectangle {
               implicitWidth: 200
               implicitHeight: 40
               border.color: singleline.focus ? "#21be2b" : "lightgray"
               color: singleline.focus ? "lightgray" : "transparent"
            }
        }

        TextArea {
            id: multiline
            placeholderText: "Initial text\n...\n...\n"
            Layout.alignment: Qt.AlignLeft
            Layout.fillWidth: true
            Layout.fillHeight: true
            Layout.margins: 5
            background: Rectangle {
               implicitWidth: 200
               implicitHeight: 100
               border.color: multiline.focus ? "#21be2b" : "lightgray"
               color: multiline.focus ? "lightgray" : "transparent"
            }
        }
    }
}

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