SearchField QML Type
Ein spezialisiertes Eingabefeld, das für die Suchfunktionalität verwendet werden kann. Mehr...
| Import Statement: | import QtQuick.Controls |
| Since: | Qt 6.10 |
| Inherits: |
Eigenschaften
- clearIndicator
- clearIndicator.hovered : bool
- clearIndicator.implicitIndicatorHeight : real
- clearIndicator.implicitIndicatorWidth : real
- clearIndicator.indicator : Item
- clearIndicator.pressed : bool
- currentIndex : int
- delegate : Component
- delegateModel : model
- highlightedIndex : int
- live : bool
- popup : Popup
- searchIndicator
- searchIndicator.hovered : bool
- searchIndicator.implicitIndicatorHeight : real
- searchIndicator.implicitIndicatorWidth : real
- searchIndicator.indicator : Item
- searchIndicator.pressed : bool
- suggestionCount : int
- suggestionModel : model
- text : string
- textRole : string
Signale
- void accepted()
- void activated(int index)
- void clearButtonPressed()
- void highlighted(int index)
- void searchButtonPressed()
- void searchTriggered()
- void textEdited()
Detaillierte Beschreibung
SearchField ist ein spezialisiertes Eingabefeld, das für die Suchfunktionalität entwickelt wurde. Das Steuerelement enthält ein Textfeld, Such- und Löschsymbole und ein Popup, das Vorschläge oder Suchergebnisse anzeigt.
Hinweis: Der iOS-Stil bietet kein integriertes Popup für SearchField, um das native Aussehen und die Bedienung zu erhalten. Wenn ein Popup dennoch gewünscht ist, muss es vom Benutzer definiert werden.
SearchField's Indikatoren
SearchField bietet zwei optionale eingebettete Indikatorschaltflächen: searchIndicator und clearIndicator.
Dabei handelt es sich nicht um Indikatoren im Sinne von BusyIndicator oder ProgressBar. Stattdessen sind es interaktive Steuerelemente, die in das Feld eingebettet sind (ähnlich wie die Auf-/Ab-Schaltflächen in SpinBox). Das Drücken von searchIndicator löst searchButtonPressed() aus, und das Drücken von clearIndicator löst clearButtonPressed() aus.
Zusätzlich zu den Aktionen bieten die Indikatorschaltflächen einen Interaktionsstatus (gedrückt/hochgehalten/fokussiert usw.), der von Stilen verwendet werden kann.
Anpassen des Indikatorinhalts
Die Eigenschaften searchIndicator und clearIndicator sind schreibgeschützt. Die Anpassung wird durch ihre internen Eigenschaften unterstützt.
Insbesondere wird der visuelle Inhalt der Schaltfläche durch das Element indicator bereitgestellt, das beschreibbar ist. Dadurch kann der Standardinhalt ersetzt oder ganz entfernt werden.
Zum Beispiel, um beide Indikatorsymbole zu entfernen:
SearchField { searchIndicator.indicator: null clearIndicator.indicator: null }
Dies ist ein unterstütztes Anpassungsszenario. Verschiedene SearchField-Varianten können eine der Schaltflächen weglassen (z. B. nur eine Such-Schaltfläche) oder den Indikatorinhalt durch ein alternatives Element ersetzen (z. B. ein Mikrofon-Symbol, um eine Spracheingabe auszulösen).
SearchField Modell-Rollen
SearchField ist in der Lage, Standard-Datenmodelle zu visualisieren, die die Rolle modelData anbieten:
- Modelle, die nur eine Rolle haben
- Modelle, die keine benannten Rollen haben (JavaScript Array, Integer)
Bei der Verwendung von Modellen, die mehrere benannte Rollen haben, muss SearchField so konfiguriert werden, dass es eine bestimmte text role für seine text und delegate Instanzen verwendet.
ListModel {
id : fruitModel
ListElement { name: "Apple"; color: "green" }
ListElement { name: "Cherry"; color: "red" }
ListElement { name: "Banana"; color: "yellow" }
ListElement { name: "Orange"; color: "orange" }
ListElement { name: "WaterMelon"; color: "pink" }
}
SortFilterProxyModel {
id: fruitFilter
model: fruitModel
sorters: [
RoleSorter {
roleName: "name"
}
]
filters: [
FunctionFilter {
component CustomData: QtObject { property string name }
property var regExp: new RegExp(fruitSearch.text, "i")
onRegExpChanged: invalidate()
function filter(data: CustomData): bool {
return regExp.test(data.name);
}
}
]
}
SearchField {
id: fruitSearch
suggestionModel: fruitFilter
textRole: "name"
anchors.horizontalCenter: parent.horizontalCenter
}Siehe auch searchIndicator, clearIndicator, searchButtonPressed(), und clearButtonPressed().
Dokumentation der Eigenschaft
clearIndicator group
clearIndicator.hovered : bool
clearIndicator.implicitIndicatorHeight : real
clearIndicator.implicitIndicatorWidth : real
clearIndicator.indicator : Item
clearIndicator.pressed : bool
Diese gruppierte Eigenschaft enthält das Indikator-Element clearIndicator und seine zugehörigen Eigenschaften.
Diese Eigenschaft enthält den Indikator clear. Ein Druck auf sie löst clearButtonPressed() aus.
Sie ist offengelegt, damit Stile und Anwendungen sie über ihre internen Eigenschaften anpassen können (z. B. Ersetzen oder Entfernen von clearIndicator über clearIndicator.indicator oder Reagieren auf Interaktionszustände wie "gedrückt" und "schwebend").
Siehe auch SearchField's Indicators.
currentIndex : int
Diese Eigenschaft enthält den Index des aktuell ausgewählten Vorschlags in der Popup-Liste.
Sein Wert ist -1, wenn kein Vorschlag ausgewählt ist.
currentIndex wird nicht automatisch geändert, wenn sich das Modell ändert oder wenn der Benutzer Text eingibt oder bearbeitet. Er wird nur aktualisiert, wenn der Benutzer explizit einen Vorschlag auswählt, entweder durch Anklicken eines Elements im Popup oder durch Drücken der Eingabetaste auf einem markierten Element.
currentIndex kann festgelegt werden, z. B. um das erste Element im Modell beim Starten anzuzeigen. Stellen Sie vorher sicher, dass das Modell nicht leer ist:
SearchField { id: searchField suggestionModel: ListModel { ListElement { value: "123,456" } } textRole: "value" Component.onCompleted: { if (suggestionModel.count > 0) { text = suggestionModel.get(0).value currentIndex = 0 } } }
Siehe auch activated(), text, und highlightedIndex.
delegate : Component
Diese Eigenschaft enthält einen Delegaten, der ein Element im Suchfeld-Popup präsentiert.
Es wird empfohlen, ItemDelegate (oder ein anderes Derivat von AbstractButton ) als Delegat zu verwenden. Dadurch wird sichergestellt, dass die Interaktion wie erwartet funktioniert und das Popup-Fenster automatisch geschlossen wird, wenn dies erforderlich ist. Wenn andere Typen als Delegat verwendet werden, muss das Popup-Fenster manuell geschlossen werden. Zum Beispiel, wenn MouseArea verwendet wird:
delegate: Rectangle {
// ...
MouseArea {
// ...
onClicked: searchField.popup.close()
}
}Seit Qt 6.11 übernimmt SearchField nicht mehr die Verantwortung für den Delegaten.
delegateModel : model [read-only]
Diese Eigenschaft enthält das Modell, das Delegateninstanzen für das Suchfeld bereitstellt.
Sie wird normalerweise einem ListView in der contentItem der popup zugewiesen.
highlightedIndex : int [read-only]
Diese Eigenschaft enthält den Index des derzeit hervorgehobenen Elements in der Popup-Liste.
Wenn das hervorgehobene Element aktiviert wird, schließt sich das Popup-Fenster, currentIndex wird auf highlightedIndex aktualisiert, und diese Eigenschaft wird auf -1 zurückgesetzt, was anzeigt, dass derzeit kein Element hervorgehoben ist.
Siehe auch highlighted() und currentIndex.
live : bool
Diese Eigenschaft enthält einen booleschen Wert, der bestimmt, ob die Suche bei jeder Textänderung ausgelöst wird.
Wenn sie auf true gesetzt ist, wird das Signal searchTriggered() bei jeder Textänderung ausgegeben, so dass Sie auf jeden Tastendruck reagieren können. Bei false wird das Signal searchTriggered() nur ausgegeben, wenn der Benutzer die Enter- oder Return-Taste drückt.
Siehe auch searchTriggered().
popup : Popup
Diese Eigenschaft enthält das Popup.
Das Popup kann bei Bedarf manuell geöffnet oder geschlossen werden:
onSpecialEvent: searchField.popup.close()
searchIndicator group
searchIndicator.hovered : bool
searchIndicator.implicitIndicatorHeight : real
searchIndicator.implicitIndicatorWidth : real
searchIndicator.indicator : Item
searchIndicator.pressed : bool
Diese gruppierte Eigenschaft enthält das Indikator-Element searchIndicator und seine zugehörigen Eigenschaften.
Diese Eigenschaft enthält den Suchindikator. Ein Druck auf ihn löst searchButtonPressed() aus.
Sie ist offengelegt, damit Stile und Anwendungen sie über ihre internen Eigenschaften anpassen können (z. B. Ersetzen oder Entfernen von searchIndicator über searchIndicator.indicator oder Reagieren auf Interaktionszustände wie "gedrückt" und "schwebend").
Siehe auch SearchField's Indicators.
suggestionCount : int [read-only]
Diese Eigenschaft enthält die Anzahl der Vorschläge, die aus dem Vorschlagsmodell angezeigt werden sollen.
suggestionModel : model
Diese Eigenschaft enthält das Datenmodell, das zur Anzeige von Suchvorschlägen im Popup-Menü verwendet wird.
SearchField { textRole: "age" suggestionModel: ListModel { ListElement { name: "Karen"; age: "66" } ListElement { name: "Jim"; age: "32" } ListElement { name: "Pamela"; age: "28" } } }
Siehe auch textRole.
text : string
Diese Eigenschaft enthält den aktuellen Eingabetext im Suchfeld.
Der Text ist an die Benutzereingabe gebunden und löst die Aktualisierung von Vorschlägen oder die Suchlogik aus.
Siehe auch searchTriggered() und textEdited().
textRole : string
Diese Eigenschaft enthält die Modellrolle, die zur Anzeige von Elementen im Vorschlagsmodell verwendet wird, das in der Popup-Liste angezeigt wird.
Wenn das Modell mehrere Rollen hat, kann textRole eingestellt werden, um zu bestimmen, welche Rolle angezeigt werden soll.
Signal-Dokumentation
void accepted()
Dieses Signal wird ausgegeben, wenn der Benutzer seine Eingabe durch Drücken der Enter- oder Return-Taste bestätigt.
Dieses Signal wird in der Regel verwendet, um eine Suche oder Aktion auf der Grundlage der endgültigen Texteingabe auszulösen, und es zeigt die Absicht des Benutzers an, die Abfrage abzuschließen oder abzuschicken.
Hinweis: Der entsprechende Handler ist onAccepted.
Siehe auch searchTriggered().
void activated(int index)
Dieses Signal wird ausgegeben, wenn das Element auf index durch den Benutzer aktiviert wird.
Ein Element wird aktiviert, wenn es ausgewählt wird, während das Popup geöffnet ist, wodurch das Popup geschlossen wird (und currentIndex sich ändert). Die Eigenschaft currentIndex wird auf index gesetzt.
Hinweis: Der entsprechende Handler ist onActivated.
Siehe auch currentIndex.
void clearButtonPressed()
Dieses Signal wird ausgegeben, wenn die Schaltfläche "Löschen" gedrückt wird.
Hinweis: Der entsprechende Handler ist onClearButtonPressed.
Siehe auch searchButtonPressed().
void highlighted(int index)
Dieses Signal wird ausgegeben, wenn das Element unter index in der Popup-Liste vom Benutzer hervorgehoben wird.
Das Signal "Hervorgehoben" wird nur ausgegeben, wenn das Popup geöffnet ist und ein Element hervorgehoben ist, aber nicht unbedingt activated.
Hinweis: Der entsprechende Handler ist onHighlighted.
Siehe auch highlightedIndex.
void searchButtonPressed()
Dieses Signal wird ausgegeben, wenn die Suchschaltfläche gedrückt wird.
Hinweis: Der entsprechende Handler ist onSearchButtonPressed.
Siehe auch clearButtonPressed().
void searchTriggered()
Dieses Signal wird ausgesendet, wenn eine Suchaktion eingeleitet wird.
Es tritt in zwei Fällen auf: 1. Wenn die Enter- oder Return-Taste gedrückt wird, wird es zusammen mit dem Signal accepted() ausgegeben. 2. Wenn der Text bearbeitet wird und die Eigenschaft live auf true gesetzt ist, wird dieses Signal ausgegeben.
Dieses Signal ist ideal für die Einleitung von Suchvorgängen sowohl bei Bedarf als auch in Echtzeit während der Eingabe durch den Benutzer, je nach dem gewünschten Interaktionsmodell.
Hinweis: Der entsprechende Handler ist onSearchTriggered.
Siehe auch accepted() und textEdited().
void textEdited()
Dieses Signal wird jedes Mal ausgegeben, wenn der Benutzer den Text im Suchfeld ändert, normalerweise bei jedem Tastendruck.
Hinweis: Der entsprechende Handler ist onTextEdited.
Siehe auch searchTriggered().
© 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.