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.