Auf dieser Seite

SortFilterProxyModel QML Type

Bietet Sortier- und Filterfunktionen für eine „ QAbstractItemModel “. Mehr…

Import Statement: import QtQml.Models
Since: Qt 6.10
Status: Technology preview

Dieser Typ befindet sich in der Technology Preview und kann sich noch ändern.

Eigenschaften

Methoden

Ausführliche Beschreibung

SortFilterProxyModel erbt von QAbstractProxyModel, das die Umwandlung von Quellindizes in Proxy-Indizes übernimmt. Das Sortieren und Filtern wird über die Eigenschaften „ sorters “ und „ filters “ gesteuert, die die in QML festgelegte Ausführungsreihenfolge bestimmen. Diese Reihenfolge kann mithilfe der für jeden Sorter verfügbaren Eigenschaft „priority“ überschrieben werden. Standardmäßig haben alle Sorter dieselbe Priorität.

SortFilterProxyModel ermöglicht es Benutzern, ein „ QAbstractItemModel “ zu sortieren und zu filtern. Elementansichten wie „ TableView “ oder „ TreeView “ können dieses Proxy-Modell nutzen, um gefilterte Inhalte anzuzeigen.

Hinweis: Derzeit unterstützt das „SortFilterProxyModel“ ausschließlich „ QAbstractItemModel “ als Quellmodell.

Der folgende Codeausschnitt zeigt die Konfiguration von Sortier- und Filterfunktionen im QML-SortFilterProxyModel:

ProcessModel { id: processModel }

SortFilterProxyModel {
    id: sfpm
    sourceModel: processModel
    sorters: [
        RoleSorter {
            roleName: "user"
            priority: 0
        },
        RoleSorter {
            roleName: "pid"
            priority: 1
        }
    ]
    filters: [
        FunctionFilter {
            function filter(cpuUsage: real) : bool {
                return (cpuUsage > 90)
            }
        }
    ]
}

Das SortFilterProxyModel sortiert und filtert Daten dynamisch, sobald sich die Daten im Quellmodell ändern, und kann über die Eigenschaft „ dynamicSortFilter “ deaktiviert werden.

Die Sortierer „ RoleSorter “, „ StringSorter “ und „ FunctionSorter “ können im „SortFilterProxyModel“ konfiguriert werden. Jeder Sortierer kann über die Eigenschaft „ column “ mit einem bestimmten Spaltenindex konfiguriert werden. Wird kein Spaltenindex angegeben, wird die Sortierung standardmäßig auf den Spaltenindex 0 des Modells angewendet. Die Ausführungsreihenfolge des Sortierers kann über die Eigenschaft „ priority “ geändert werden. Dies ist besonders nützlich bei der Durchführung hierarchischer Sortierungen, z. B. beim Sortieren von Daten in der ersten Spalte und der anschließenden Anwendung der Sortierung auf nachfolgende Spalten.

Um einen bestimmten Sortierer zu deaktivieren, kann ` enabled ` auf ` false` gesetzt werden.

Die Priorität des Sortierers kann zudem überschrieben werden, indem der primäre Sortierer über den Methodenaufruf ` setPrimarySorter()` festgelegt wird. Dies ist hilfreich, wenn die Ansicht die Daten einer bestimmten Spalte durch Klicken auf die Spaltenüberschrift sortieren soll, wie beispielsweise unter TableView, und für das Modell zusätzlich weitere Sortierer konfiguriert sind.

Die Filter „ ValueFilter “ und „ FunctionFilter “ können in „SortFilterProxyModel“ konfiguriert werden. Jeder Filter kann ähnlich wie der Sortierer über die Eigenschaft „ column “ festgelegt werden, um Daten in einer bestimmten Spalte zu filtern. Wird keine Spalte angegeben, wird der Filter auf alle Spaltenindizes im Modell angewendet. Um den Overhead durch unerwünschte Prüfungen während des Filtervorgangs zu reduzieren, wird empfohlen, den Spaltenindex anzugeben.

Um einen bestimmten Filter zu deaktivieren, kann „ enabled “ auf „ false “ gesetzt werden.

ListModel {
    id: listModel
    ListElement { name: "Adan"; age: 25; department: "Process"; pid: 209711; country: "Norway" }
    ListElement { name: "Hannah"; age: 48; department: "HR"; pid: 154916; country: "Germany" }
    ListElement { name: "Divina"; age: 63; department: "Marketing"; pid: 158038; country: "Spain" }
    ListElement { name: "Rohith"; age: 35; department: "Process"; pid: 202582; country: "India" }
    ListElement { name: "Latesha"; age: 23; department: "Quality"; pid: 232582; country: "UK" }
}

SortFilterProxyModel {
    id: ageFilterModel
    sourceModel: listModel
    filters: [
        AgeFilter { }
    ]
    sorters: [
        RoleSorter { roleName: "department" }
    ]
}

ListView {
    anchors.fill: parent
    clip: true
    model: ageFilterModel
    delegate: Rectangle {
        implicitWidth: 100
        implicitHeight: 50
        border.width: 1
        Text {
            text: name
            anchors.centerIn: parent
        }
    }
}

Der „AgeFilter“ im obigen Codeausschnitt kann wie folgt deklariert werden

FunctionFilter {
   function filter(age: int) : bool {
      return age > 30
   }
}

Hinweis: Diese API gilt als Tech-Preview und kann sich in zukünftigen Versionen von Qt ändern oder entfernt werden.

Dokumentation zur Eigenschaft

autoAcceptChildRows : bool

Diese Eigenschaft filtert keine untergeordneten Zeilen akzeptierter Zeilen heraus. Das Verhalten ähnelt dem von „autoAcceptChildRows“ unter QSortFilterProxyModel.

Der Standardwert ist „ false “.

dynamicSortFilter : bool

Diese Eigenschaft legt fest, ob das Proxy-Modell dynamisch sortiert und gefiltert wird, sobald sich der Inhalt des Quellmodells ändert.

Der Standardwert lautet „ true “.

filters : list<FilterBase>

Diese Eigenschaft enthält die Liste der Filter für die Funktion „ SortFilterProxyModel “. Wenn keine Priorität festgelegt ist, wendet die Funktion „ SortFilterProxyModel “ die Filter in der in der Liste angegebenen Reihenfolge an.

recursiveFiltering : bool

Diese Eigenschaft ermöglicht es, alle konfigurierten Filter rekursiv auf untergeordnete Elemente anzuwenden. Das Verhalten ähnelt dem von „ recursiveFilteringEnabled “ unter QSortFilterProxyModel.

Der Standardwert ist „ false “.

sorters : list<Sorter>

Diese Eigenschaft enthält die Liste der Sortierer für den „ SortFilterProxyModel “. Wenn keine Priorität festgelegt ist, wendet der „ SortFilterProxyModel “ die Sortierer in der in der Liste angegebenen Reihenfolge an.

sourceModel : var

Mit dieser Eigenschaft kann das Quellmodell für das Sortierfilter-Proxy-Modell festgelegt werden. Der Wert sollte vom Typ „ QAbstractItemModel “ sein.

Methodendokumentation

void invalidate()

Bei diesem Verfahren wird das Modell ungültig gemacht, indem die konfigurierten Filter und Sortierkriterien anhand der Quellmodelldaten neu ausgewertet werden.

void invalidateSorter()

Diese Methode zwingt das Sortierfilter-Proxy-Modell dazu, die konfigurierten Sortierer anhand der Daten neu zu bewerten. Sie kann in Fällen verwendet werden, in denen die dynamische Sortierung über eine Eigenschaft deaktiviert wurde. dynamicSortFilter

void setPrimarySorter(sorter)

Mit dieser Methode lässt sich der primäre Sortierer im Sortierfilter-Proxy-Modell festlegen. Der primäre Sortierer wird vor allen anderen Sortierern ausgewertet, die im Rahmen der Eigenschaft „ sorter “ konfiguriert wurden. Wenn keine Konfiguration vorliegt oder kein Wert an „ null “ übergeben wurde, gilt der Sortierer mit der höchsten Priorität als primärer Sortierer.

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