QSortFilterProxyModel Class

Die Klasse QSortFilterProxyModel bietet Unterstützung für das Sortieren und Filtern von Daten, die zwischen einem anderen Modell und einer Ansicht übergeben werden. Mehr...

Kopfzeile: #include <QSortFilterProxyModel>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Vererbt: QAbstractProxyModel

Eigenschaften

Öffentliche Funktionen

QSortFilterProxyModel(QObject *parent = nullptr)
virtual ~QSortFilterProxyModel()
bool autoAcceptChildRows() const
QBindable<bool> bindableAutoAcceptChildRows()
QBindable<bool> bindableDynamicSortFilter()
QBindable<Qt::CaseSensitivity> bindableFilterCaseSensitivity()
QBindable<int> bindableFilterKeyColumn()
QBindable<QRegularExpression> bindableFilterRegularExpression()
QBindable<int> bindableFilterRole()
QBindable<bool> bindableIsSortLocaleAware()
QBindable<bool> bindableRecursiveFilteringEnabled()
QBindable<Qt::CaseSensitivity> bindableSortCaseSensitivity()
QBindable<int> bindableSortRole()
bool dynamicSortFilter() const
Qt::CaseSensitivity filterCaseSensitivity() const
int filterKeyColumn() const
QRegularExpression filterRegularExpression() const
int filterRole() const
bool isRecursiveFilteringEnabled() const
bool isSortLocaleAware() const
void setAutoAcceptChildRows(bool accept)
void setDynamicSortFilter(bool enable)
void setFilterCaseSensitivity(Qt::CaseSensitivity cs)
void setFilterKeyColumn(int column)
void setFilterRole(int role)
void setRecursiveFilteringEnabled(bool recursive)
void setSortCaseSensitivity(Qt::CaseSensitivity cs)
void setSortLocaleAware(bool on)
void setSortRole(int role)
Qt::CaseSensitivity sortCaseSensitivity() const
int sortColumn() const
Qt::SortOrder sortOrder() const
int sortRole() const

Reimplementierte öffentliche Funktionen

virtual QModelIndex buddy(const QModelIndex &index) const override
virtual bool canFetchMore(const QModelIndex &parent) const override
virtual int columnCount(const QModelIndex &parent = QModelIndex()) const override
virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override
virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override
virtual void fetchMore(const QModelIndex &parent) override
virtual Qt::ItemFlags flags(const QModelIndex &index) const override
virtual bool hasChildren(const QModelIndex &parent = QModelIndex()) const override
virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override
virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override
virtual bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()) override
virtual bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()) override
virtual QModelIndex mapFromSource(const QModelIndex &sourceIndex) const override
virtual QItemSelection mapSelectionFromSource(const QItemSelection &sourceSelection) const override
virtual QItemSelection mapSelectionToSource(const QItemSelection &proxySelection) const override
virtual QModelIndex mapToSource(const QModelIndex &proxyIndex) const override
virtual QModelIndexList match(const QModelIndex &start, int role, const QVariant &value, int hits = 1, Qt::MatchFlags flags = Qt::MatchFlags(Qt::MatchStartsWith|Qt::MatchWrap)) const override
virtual QMimeData *mimeData(const QModelIndexList &indexes) const override
virtual QStringList mimeTypes() const override
virtual QModelIndex parent(const QModelIndex &child) const override
virtual bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()) override
virtual bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()) override
virtual int rowCount(const QModelIndex &parent = QModelIndex()) const override
virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override
virtual bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole) override
virtual void setSourceModel(QAbstractItemModel *sourceModel) override
virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const override
virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) override
virtual QSize span(const QModelIndex &index) const override
virtual Qt::DropActions supportedDropActions() const override

Öffentliche Slots

void invalidate()
void setFilterFixedString(const QString &pattern)
void setFilterRegularExpression(const QString &pattern)
void setFilterRegularExpression(const QRegularExpression &regularExpression)
void setFilterWildcard(const QString &pattern)

Signale

(since 6.0) void autoAcceptChildRowsChanged(bool autoAcceptChildRows)
void filterCaseSensitivityChanged(Qt::CaseSensitivity filterCaseSensitivity)
void filterRoleChanged(int filterRole)
void recursiveFilteringEnabledChanged(bool recursiveFilteringEnabled)
void sortCaseSensitivityChanged(Qt::CaseSensitivity sortCaseSensitivity)
void sortLocaleAwareChanged(bool sortLocaleAware)
void sortRoleChanged(int sortRole)

Geschützte Funktionen

virtual bool filterAcceptsColumn(int source_column, const QModelIndex &source_parent) const
virtual bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const
(since 6.0) void invalidateColumnsFilter()
void invalidateFilter()
(since 6.0) void invalidateRowsFilter()
virtual bool lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const

Detaillierte Beschreibung

QSortFilterProxyModel kann zum Sortieren von Elementen, zum Herausfiltern von Elementen oder für beides verwendet werden. Das Modell wandelt die Struktur eines Quellmodells um, indem es die Modellindizes, die es liefert, auf neue Indizes abbildet, die verschiedenen Orten entsprechen, die von den Ansichten verwendet werden sollen. Mit diesem Ansatz kann ein bestimmtes Quellmodell in Bezug auf die Ansichten umstrukturiert werden, ohne dass die zugrunde liegenden Daten transformiert werden müssen und ohne dass die Daten im Speicher dupliziert werden.

Nehmen wir an, dass wir die von einem benutzerdefinierten Modell bereitgestellten Elemente sortieren und filtern wollen. Der Code zum Einrichten des Modells und der Ansicht, ohne Sortierung und Filterung, würde wie folgt aussehen:

        QTreeView *treeView = new QTreeView;
        MyItemModel *model = new MyItemModel(this);

        treeView->setModel(model);

Um MyItemModel Sortier- und Filterunterstützung hinzuzufügen, müssen wir ein QSortFilterProxyModel erstellen, setSourceModel() mit MyItemModel als Argument aufrufen und das QSortFilterProxyModel in der Ansicht installieren:

        QTreeView *treeView = new QTreeView;
        MyItemModel *sourceModel = new MyItemModel(this);
        QSortFilterProxyModel *proxyModel = new QSortFilterProxyModel(this);

        proxyModel->setSourceModel(sourceModel);
        treeView->setModel(proxyModel);

Zu diesem Zeitpunkt ist weder die Sortierung noch die Filterung aktiviert; die ursprünglichen Daten werden in der Ansicht angezeigt. Alle durch das QSortFilterProxyModel vorgenommenen Änderungen werden auf das ursprüngliche Modell angewendet.

Das QSortFilterProxyModel fungiert als Wrapper für das Originalmodell. Wenn Sie die Quelltexte QModelIndexes in sortierte/gefilterte Modellindizes umwandeln müssen oder umgekehrt, verwenden Sie mapToSource(), mapFromSource(), mapSelectionToSource() und mapSelectionFromSource().

Hinweis: Standardmäßig sortiert und filtert das Modell die Daten dynamisch neu, wenn sich das ursprüngliche Modell ändert. Dieses Verhalten kann durch Einstellen der Eigenschaft dynamicSortFilter geändert werden.

Die Beispiele Grundlegendes Sortier-/Filtermodell und Benutzerdefiniertes Sortier-/Filtermodell veranschaulichen, wie QSortFilterProxyModel zum Durchführen grundlegender Sortier- und Filterfunktionen verwendet wird und wie es zur Implementierung eines benutzerdefinierten Verhaltens unterklassifiziert werden kann.

Sortierung

QTableView und QTreeView haben eine sortingEnabled Eigenschaft, die steuert, ob der Benutzer die Ansicht sortieren kann, indem er auf die horizontale Kopfzeile der Ansicht klickt. Ein Beispiel:

        treeView->setSortingEnabled(true);

Wenn diese Funktion aktiviert ist (die Standardeinstellung ist aus), werden die Elemente durch Klicken auf einen Kopfzeilenabschnitt nach der betreffenden Spalte sortiert. Durch wiederholtes Klicken kann der Benutzer zwischen aufsteigender und absteigender Reihenfolge wechseln.

A sorted QTreeView

Hinter den Kulissen ruft die Ansicht die virtuelle Funktion sort() auf dem Modell auf, um die Daten im Modell neu zu ordnen. Um Ihre Daten sortierbar zu machen, können Sie entweder sort() in Ihrem Modell implementieren oder ein QSortFilterProxyModel verwenden, um Ihr Modell zu umhüllen - QSortFilterProxyModel bietet eine generische sort()-Reimplementierung, die mit sortRole() (standardmäßigQt::DisplayRole ) der Elemente arbeitet und mehrere Datentypen versteht, einschließlich int, QString und QDateTime. Bei hierarchischen Modellen wird die Sortierung rekursiv auf alle untergeordneten Elemente angewendet. Bei String-Vergleichen wird standardmäßig zwischen Groß- und Kleinschreibung unterschieden; dies kann durch Setzen der Eigenschaft sortCaseSensitivity geändert werden.

Benutzerdefiniertes Sortierverhalten wird durch die Unterklassifizierung von QSortFilterProxyModel und die Neuimplementierung von lessThan() erreicht, das zum Vergleich von Elementen verwendet wird. Ein Beispiel:

bool MySortFilterProxyModel::lessThan(const QModelIndex &left,
                                      const QModelIndex &right) const
{
    QVariant leftData = sourceModel()->data(left);
    QVariant rightData = sourceModel()->data(right);

    if (leftData.userType() == QMetaType::QDateTime) {
        return leftData.toDateTime() < rightData.toDateTime();
    } else {
        static const QRegularExpression emailPattern("[\\w\\.]*@[\\w\\.]*");

        QString leftString = leftData.toString();
        if (left.column() == 1) {
            const QRegularExpressionMatch match = emailPattern.match(leftString);
            if (match.hasMatch())
                leftString = match.captured(0);
        }
        QString rightString = rightData.toString();
        if (right.column() == 1) {
            const QRegularExpressionMatch match = emailPattern.match(rightString);
            if (match.hasMatch())
                rightString = match.captured(0);
        }

        return QString::localeAwareCompare(leftString, rightString) < 0;
    }
}

(Dieser Codeschnipsel stammt aus dem Beispiel für das benutzerdefinierte Sortier-/Filtermodell ).

Ein alternativer Ansatz zum Sortieren besteht darin, das Sortieren in der Ansicht zu deaktivieren und dem Benutzer eine bestimmte Reihenfolge vorzuschreiben. Dies geschieht durch den expliziten Aufruf von sort() mit der gewünschten Spalte und Reihenfolge als Argumente auf dem QSortFilterProxyModel (oder auf dem Originalmodell, wenn es sort() implementiert). Zum Beispiel:

        proxyModel->sort(2, Qt::AscendingOrder);

QSortFilterProxyModel kann nach Spalte -1 sortiert werden, in diesem Fall kehrt es zur Sortierreihenfolge des zugrunde liegenden Quellmodells zurück.

Hinweis: sortColumn() gibt die zuletzt verwendete Sortierspalte zurück. Der Standardwert ist -1, was bedeutet, dass dieses Proxy-Modell nicht sortiert. Beachten Sie auch, dass sort() die sortColumn() auf die zuletzt verwendete Sortierspalte setzt.

Filtern

Zusätzlich zum Sortieren kann QSortFilterProxyModel verwendet werden, um Elemente auszublenden, die einem bestimmten Filter nicht entsprechen. Der Filter wird mit einem QRegularExpression Objekt spezifiziert und wird auf die filterRole() (standardmäßigQt::DisplayRole ) jedes Elements für eine bestimmte Spalte angewendet. Das Objekt QRegularExpression kann für die Übereinstimmung mit einem regulären Ausdruck, einem Platzhaltermuster oder einer festen Zeichenfolge verwendet werden. Ein Beispiel:

        proxyModel->setFilterRegularExpression(QRegularExpression("\.png", QRegularExpression::CaseInsensitiveOption));
        proxyModel->setFilterKeyColumn(1);

Bei hierarchischen Modellen wird der Filter rekursiv auf alle Kinder angewendet. Wenn ein übergeordnetes Element nicht mit dem Filter übereinstimmt, wird keines seiner Kinder angezeigt.

Ein üblicher Anwendungsfall ist, dass der Benutzer den regulären Ausdruck, das Platzhaltermuster oder die feste Zeichenkette des Filters in einem QLineEdit angeben kann und das Signal textChanged() mit setFilterRegularExpression(), setFilterWildcard() oder setFilterFixedString() verbindet, um den Filter erneut anzuwenden.

Benutzerdefiniertes Filterverhalten kann durch Neuimplementierung der Funktionen filterAcceptsRow() und filterAcceptsColumn() erreicht werden. Die folgende Implementierung (aus dem Beispiel für das benutzerdefinierte Sortier-/Filtermodell ) ignoriert beispielsweise die Eigenschaft filterKeyColumn und führt die Filterung für die Spalten 0, 1 und 2 durch:

bool MySortFilterProxyModel::filterAcceptsRow(int sourceRow,
                                              const QModelIndex &sourceParent) const
{
    QModelIndex index0 = sourceModel()->index(sourceRow, 0, sourceParent);
    QModelIndex index1 = sourceModel()->index(sourceRow, 1, sourceParent);
    QModelIndex index2 = sourceModel()->index(sourceRow, 2, sourceParent);

    return (sourceModel()->data(index0).toString().contains(filterRegularExpression())
            || sourceModel()->data(index1).toString().contains(filterRegularExpression()))
            && dateInRange(sourceModel()->data(index2).toDate());
}

(Dieser Codeschnipsel stammt aus dem Beispiel für das benutzerdefinierte Sortier-/Filtermodell ).

Wenn Sie mit großen Mengen von Filtern arbeiten und invalidateFilter() wiederholt aufrufen müssen, kann die Verwendung von beginResetModel() / endResetModel() effizienter sein, je nach der Implementierung Ihres Modells. beginResetModel () / endResetModel() setzt jedoch das Proxy-Modell in seinen ursprünglichen Zustand zurück, wobei die Auswahlinformationen verloren gehen, und führt dazu, dass das Proxy-Modell neu aufgefüllt wird.

Unterklassenbildung

Da QAbstractProxyModel und seine Unterklassen von QAbstractItemModel abgeleitet sind, gelten viele der Ratschläge zur Unterklassifizierung von normalen Modellen auch für Proxy-Modelle. Darüber hinaus ist es erwähnenswert, dass viele der Standardimplementierungen von Funktionen in dieser Klasse so geschrieben sind, dass sie die entsprechenden Funktionen im jeweiligen Quellmodell aufrufen. Dieser einfache Proxy-Mechanismus muss möglicherweise für Quellmodelle mit komplexerem Verhalten überschrieben werden; wenn das Quellmodell beispielsweise eine benutzerdefinierte hasChildren()-Implementierung bietet, sollten Sie diese auch im Proxy-Modell bereitstellen.

Hinweis: Einige allgemeine Richtlinien für die Subklassifizierung von Modellen sind in der Model Subclassing Reference verfügbar.

Siehe auch QAbstractProxyModel, QAbstractItemModel, Model/View Programming, Basic Sort/Filter Model Example, Custom Sort/Filter Model Example, und QIdentityProxyModel.

Dokumentation der Eigenschaften

[bindable, since 6.0] autoAcceptChildRows : bool

Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.

Wenn true, filtert das Proxy-Modell Kinder von akzeptierten Zeilen nicht heraus, auch wenn sie selbst sonst herausgefiltert würden.

Der Standardwert ist false.

Diese Eigenschaft wurde in Qt 6.0 eingeführt.

Siehe auch recursiveFilteringEnabled und filterAcceptsRow().

[bindable] dynamicSortFilter : bool

Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.

Diese Eigenschaft bestimmt, ob das Proxy-Modell dynamisch sortiert und gefiltert wird, wenn sich der Inhalt des Quellmodells ändert

Beachten Sie, dass Sie das Quellmodell nicht über das Proxy-Modell aktualisieren sollten, wenn dynamicSortFilter wahr ist. Wenn Sie z.B. das Proxy Model auf QComboBox setzen, dann wird die Verwendung von Funktionen, die das Model aktualisieren, z.B. addItem(), nicht wie erwartet funktionieren. Eine Alternative ist es, dynamicSortFilter auf false zu setzen und sort() aufzurufen, nachdem Sie Elemente zu QComboBox hinzugefügt haben.

Der Standardwert ist true.

Siehe auch sortColumn().

[bindable] filterCaseSensitivity : Qt::CaseSensitivity

Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.

Diese Eigenschaft enthält die Groß- und Kleinschreibung des QRegularExpression Musters, das zum Filtern des Inhalts des Quellmodells verwendet wird.

Standardmäßig ist der Filter case sensitive.

Hinweis: Das Setzen dieser Eigenschaft überträgt die neue Groß-/Kleinschreibung auf die Eigenschaft filterRegularExpression und bricht somit deren Bindung auf. Ebenso ändert das explizite Setzen von filterRegularExpression die aktuelle Groß-/Kleinschreibung, wodurch die Bindung aufgehoben wird.

Siehe auch filterRegularExpression und sortCaseSensitivity.

[bindable] filterKeyColumn : int

Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.

Diese Eigenschaft enthält die Spalte, aus der der zum Filtern des Inhalts des Quellmodells verwendete Schlüssel gelesen wird.

Der Standardwert ist 0. Wenn der Wert -1 ist, werden die Schlüssel aus allen Spalten gelesen.

[bindable] filterRegularExpression : QRegularExpression

Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.

Diese Eigenschaft enthält die QRegularExpression verwendet, um den Inhalt des Quellmodells zu filtern.

Die Einstellung dieser Eigenschaft durch die QRegularExpression Überladung überschreibt die aktuelle filterCaseSensitivity. Standardmäßig ist die QRegularExpression eine leere Zeichenkette, die alle Inhalte abdeckt.

Wenn kein QRegularExpression oder ein leerer String gesetzt ist, wird alles im Quellmodell akzeptiert.

Hinweis: Das Setzen dieser Eigenschaft überträgt die Groß-/Kleinschreibung des neuen regulären Ausdrucks auf die Eigenschaft filterCaseSensitivity und unterbricht somit deren Bindung. Ebenso ändert das explizite Setzen von filterCaseSensitivity die Groß-/Kleinschreibung des aktuellen regulären Ausdrucks, wodurch dessen Bindung aufgehoben wird.

Siehe auch filterCaseSensitivity, setFilterWildcard(), und setFilterFixedString().

[bindable] filterRole : int

Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.

Diese Eigenschaft enthält die Elementrolle, die zur Abfrage der Daten des Quellmodells beim Filtern von Elementen verwendet wird.

Der Standardwert ist Qt::DisplayRole.

Siehe auch filterAcceptsRow().

[bindable] isSortLocaleAware : bool

Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.

Diese Eigenschaft enthält die lokale Einstellung, die für den Vergleich von Zeichenketten beim Sortieren verwendet wird.

Standardmäßig ist die Sortierung nicht ortsabhängig.

Siehe auch sortCaseSensitivity und lessThan().

[bindable] recursiveFilteringEnabled : bool

Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.

Diese Eigenschaft gibt an, ob der Filter rekursiv auf Kinder angewandt werden soll, und für jedes passende Kind werden auch seine Eltern sichtbar sein.

Der Standardwert ist false.

Siehe auch autoAcceptChildRows und filterAcceptsRow().

[bindable] sortCaseSensitivity : Qt::CaseSensitivity

Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.

Diese Eigenschaft enthält die Einstellung der Groß- und Kleinschreibung, die für den Vergleich von Zeichenketten beim Sortieren verwendet wird

Standardmäßig wird bei der Sortierung zwischen Groß- und Kleinschreibung unterschieden.

Siehe auch filterCaseSensitivity und lessThan().

[bindable] sortRole : int

Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.

Diese Eigenschaft enthält die Elementrolle, die zur Abfrage der Daten des Quellmodells beim Sortieren von Elementen verwendet wird.

Der Standardwert ist Qt::DisplayRole.

Siehe auch lessThan().

Dokumentation der Mitgliedsfunktionen

[explicit] QSortFilterProxyModel::QSortFilterProxyModel(QObject *parent = nullptr)

Konstruiert ein Sortierfiltermodell mit dem angegebenen parent.

[virtual noexcept] QSortFilterProxyModel::~QSortFilterProxyModel()

Zerstört dieses Sortierfiltermodell.

[signal, since 6.0] void QSortFilterProxyModel::autoAcceptChildRowsChanged(bool autoAcceptChildRows)

Dieses Signal wird ausgesendet, wenn der Wert der Eigenschaft autoAcceptChildRows geändert wird.

Hinweis: Notifier-Signal für die Eigenschaft autoAcceptChildRows.

Diese Funktion wurde in Qt 6.0 eingeführt.

Siehe auch autoAcceptChildRows.

[override virtual] QModelIndex QSortFilterProxyModel::buddy(const QModelIndex &index) const

Reimplements: QAbstractProxyModel::buddy(const QModelIndex &index) const.

[override virtual] bool QSortFilterProxyModel::canFetchMore(const QModelIndex &parent) const

Reimplements: QAbstractProxyModel::canFetchMore(const QModelIndex &parent) const.

[override virtual] int QSortFilterProxyModel::columnCount(const QModelIndex &parent = QModelIndex()) const

Reimplements: QAbstractItemModel::columnCount(const QModelIndex &parent) const.

[override virtual] QVariant QSortFilterProxyModel::data(const QModelIndex &index, int role = Qt::DisplayRole) const

Reimplements: QAbstractProxyModel::data(const QModelIndex &proxyIndex, int role) const.

Siehe auch setData().

[override virtual] bool QSortFilterProxyModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)

Reimplements: QAbstractProxyModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent).

[override virtual] void QSortFilterProxyModel::fetchMore(const QModelIndex &parent)

Reimplements: QAbstractProxyModel::fetchMore(const QModelIndex &parent).

[virtual protected] bool QSortFilterProxyModel::filterAcceptsColumn(int source_column, const QModelIndex &source_parent) const

Gibt true zurück, wenn das Element in der Spalte, die durch die angegebenen source_column und source_parent angegeben ist, in das Modell aufgenommen werden soll; andernfalls wird false zurückgegeben.

Hinweis: Die Standardimplementierung gibt immer true zurück. Sie müssen diese Methode neu implementieren, um das beschriebene Verhalten zu erhalten.

Siehe auch filterAcceptsRow(), setFilterFixedString(), setFilterRegularExpression(), und setFilterWildcard().

[virtual protected] bool QSortFilterProxyModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const

Gibt true zurück, wenn das Element in der durch die angegebenen source_row und source_parent angegebenen Zeile in das Modell aufgenommen werden soll; andernfalls wird false zurückgegeben.

Die Standardimplementierung gibt true zurück, wenn der Wert des betreffenden Elements mit der Filterzeichenfolge, der Platzhalterzeichenfolge oder dem regulären Ausdruck übereinstimmt.

Hinweis: Standardmäßig wird Qt::DisplayRole verwendet, um festzustellen, ob die Zeile akzeptiert werden soll oder nicht. Dies kann durch Setzen der Eigenschaft filterRole geändert werden.

Siehe auch filterAcceptsColumn(), setFilterFixedString(), setFilterRegularExpression(), und setFilterWildcard().

[signal] void QSortFilterProxyModel::filterCaseSensitivityChanged(Qt::CaseSensitivity filterCaseSensitivity)

Dieses Signal wird ausgegeben, wenn die Groß-/Kleinschreibung des Filters auf filterCaseSensitivity wechselt.

Hinweis: Benachrichtigungssignal für die Eigenschaft filterCaseSensitivity.

[signal] void QSortFilterProxyModel::filterRoleChanged(int filterRole)

Dieses Signal wird ausgegeben, wenn die Filterrolle zu filterRole wechselt.

Hinweis: Benachrichtigungssignal für die Eigenschaft filterRole.

[override virtual] Qt::ItemFlags QSortFilterProxyModel::flags(const QModelIndex &index) const

Reimplements: QAbstractProxyModel::flags(const QModelIndex &index) const.

[override virtual] bool QSortFilterProxyModel::hasChildren(const QModelIndex &parent = QModelIndex()) const

Reimplements: QAbstractProxyModel::hasChildren(const QModelIndex &parent) const.

[override virtual] QVariant QSortFilterProxyModel::headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const

Reimplements: QAbstractProxyModel::headerData(int section, Qt::Orientation orientation, int role) const.

Siehe auch setHeaderData().

[override virtual] QModelIndex QSortFilterProxyModel::index(int row, int column, const QModelIndex &parent = QModelIndex()) const

Reimplements: QAbstractItemModel::index(int row, int column, const QModelIndex &parent) const.

[override virtual] bool QSortFilterProxyModel::insertColumns(int column, int count, const QModelIndex &parent = QModelIndex())

Reimplements: QAbstractItemModel::insertColumns(int column, int count, const QModelIndex &parent).

[override virtual] bool QSortFilterProxyModel::insertRows(int row, int count, const QModelIndex &parent = QModelIndex())

Reimplements: QAbstractItemModel::insertRows(int row, int count, const QModelIndex &parent).

[slot] void QSortFilterProxyModel::invalidate()

Macht die aktuelle Sortierung und Filterung ungültig.

Siehe auch invalidateFilter().

[protected, since 6.0] void QSortFilterProxyModel::invalidateColumnsFilter()

Macht die aktuelle Filterung für die Spalten ungültig.

Diese Funktion sollte aufgerufen werden, wenn Sie eine benutzerdefinierte Filterung (durch filterAcceptsColumn()) implementieren und sich Ihre Filterparameter geändert haben. Sie unterscheidet sich von invalidateFilter() dadurch, dass sie nicht filterAcceptsRow() aufruft, sondern nur filterAcceptsColumn(). Sie können diese Funktion anstelle von invalidateFilter() verwenden, wenn Sie eine Spalte ein- oder ausblenden wollen, in der sich die Zeilen nicht ändern.

Diese Funktion wurde in Qt 6.0 eingeführt.

Siehe auch invalidate(), invalidateFilter(), und invalidateRowsFilter().

[protected] void QSortFilterProxyModel::invalidateFilter()

Macht die aktuelle Filterung ungültig.

Diese Funktion sollte aufgerufen werden, wenn Sie eine benutzerdefinierte Filterung implementieren (z. B. filterAcceptsRow()) und sich Ihre Filterparameter geändert haben.

Siehe auch invalidate(), invalidateColumnsFilter(), und invalidateRowsFilter().

[protected, since 6.0] void QSortFilterProxyModel::invalidateRowsFilter()

Macht die aktuelle Filterung für die Zeilen ungültig.

Diese Funktion sollte aufgerufen werden, wenn Sie eine benutzerdefinierte Filterung (durch filterAcceptsRow()) implementieren und sich Ihre Filterparameter geändert haben. Sie unterscheidet sich von invalidateFilter() darin, dass sie nicht filterAcceptsColumn(), sondern nur filterAcceptsRow() aufruft. Sie können diese Funktion anstelle von invalidateFilter() verwenden, wenn Sie eine Zeile ein- oder ausblenden wollen, in der sich die Spalten nicht ändern.

Diese Funktion wurde in Qt 6.0 eingeführt.

Siehe auch invalidate(), invalidateFilter(), und invalidateColumnsFilter().

[virtual protected] bool QSortFilterProxyModel::lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const

Gibt true zurück, wenn der Wert des Elements, auf das der angegebene Index source_left verweist, kleiner ist als der Wert des Elements, auf das der angegebene Index source_right verweist, andernfalls gibt sie false zurück.

Diese Funktion wird beim Sortieren als <-Operator verwendet und verarbeitet die folgenden QVariant Typen:

Jeder andere Typ wird mit QVariant::toString() in einen QString umgewandelt.

Beim Vergleich von QStringwird standardmäßig zwischen Groß- und Kleinschreibung unterschieden; dies kann mit der Eigenschaft sortCaseSensitivity geändert werden.

Standardmäßig wird der Qt::DisplayRole, der mit dem QModelIndexes verbunden ist, für Vergleiche verwendet. Dies kann durch Setzen der Eigenschaft sortRole geändert werden.

Hinweis: Die übergebenen Indizes entsprechen dem Quellmodell.

Siehe auch sortRole, sortCaseSensitivity, und dynamicSortFilter.

[override virtual] QModelIndex QSortFilterProxyModel::mapFromSource(const QModelIndex &sourceIndex) const

Reimplements: QAbstractProxyModel::mapFromSource(const QModelIndex &sourceIndex) const.

Liefert den Modellindex in QSortFilterProxyModel unter Angabe von sourceIndex aus dem Quellmodell.

Siehe auch mapToSource().

[override virtual] QItemSelection QSortFilterProxyModel::mapSelectionFromSource(const QItemSelection &sourceSelection) const

Reimplements: QAbstractProxyModel::mapSelectionFromSource(const QItemSelection &sourceSelection) const.

[override virtual] QItemSelection QSortFilterProxyModel::mapSelectionToSource(const QItemSelection &proxySelection) const

Reimplements: QAbstractProxyModel::mapSelectionToSource(const QItemSelection &proxySelection) const.

[override virtual] QModelIndex QSortFilterProxyModel::mapToSource(const QModelIndex &proxyIndex) const

Reimplements: QAbstractProxyModel::mapToSource(const QModelIndex &proxyIndex) const.

Gibt den Index des Quellmodells zurück, der dem angegebenen proxyIndex des Sortierfiltermodells entspricht.

Siehe auch mapFromSource().

[override virtual] QModelIndexList QSortFilterProxyModel::match(const QModelIndex &start, int role, const QVariant &value, int hits = 1, Qt::MatchFlags flags = Qt::MatchFlags(Qt::MatchStartsWith|Qt::MatchWrap)) const

Reimplements: QAbstractItemModel::match(const QModelIndex &start, int role, const QVariant &value, int hits, Qt::MatchFlags flags) const.

[override virtual] QMimeData *QSortFilterProxyModel::mimeData(const QModelIndexList &indexes) const

Reimplements: QAbstractProxyModel::mimeData(const QModelIndexList &indexes) const.

[override virtual] QStringList QSortFilterProxyModel::mimeTypes() const

Reimplements: QAbstractProxyModel::mimeTypes() const.

[override virtual] QModelIndex QSortFilterProxyModel::parent(const QModelIndex &child) const

Reimplements: QAbstractItemModel::parent(const QModelIndex &index) const.

[signal] void QSortFilterProxyModel::recursiveFilteringEnabledChanged(bool recursiveFilteringEnabled)

Dieses Signal wird ausgegeben, wenn die Einstellung des rekursiven Filters auf recursiveFilteringEnabled geändert wird.

Hinweis: Benachrichtigungssignal für die Eigenschaft recursiveFilteringEnabled.

[override virtual] bool QSortFilterProxyModel::removeColumns(int column, int count, const QModelIndex &parent = QModelIndex())

Reimplements: QAbstractItemModel::removeColumns(int column, int count, const QModelIndex &parent).

[override virtual] bool QSortFilterProxyModel::removeRows(int row, int count, const QModelIndex &parent = QModelIndex())

Reimplements: QAbstractItemModel::removeRows(int row, int count, const QModelIndex &parent).

[override virtual] int QSortFilterProxyModel::rowCount(const QModelIndex &parent = QModelIndex()) const

Reimplements: QAbstractItemModel::rowCount(const QModelIndex &parent) const.

[override virtual] bool QSortFilterProxyModel::setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole)

Reimplements: QAbstractProxyModel::setData(const QModelIndex &index, const QVariant &value, int role).

Siehe auch data().

[slot] void QSortFilterProxyModel::setFilterFixedString(const QString &pattern)

Setzt die feste Zeichenfolge, die zum Filtern des Inhalts des Quellmodells verwendet wird, auf die angegebene pattern.

Diese Methode setzt die Optionen des regulären Ausdrucks zurück, berücksichtigt aber die Groß- und Kleinschreibung.

Hinweis: Der Aufruf dieser Methode aktualisiert den regulären Ausdruck, wodurch die Bindung für filterRegularExpression aufgehoben wird. Es hat jedoch keine Auswirkungen auf die filterCaseSensitivity Bindungen.

Siehe auch setFilterCaseSensitivity(), setFilterRegularExpression(), setFilterWildcard(), und filterRegularExpression().

[slot] void QSortFilterProxyModel::setFilterRegularExpression(const QString &pattern)

Setzt den regulären Ausdruck, der zum Filtern des Inhalts des Quellmodells verwendet wird, auf pattern.

Diese Methode sollte für neuen Code bevorzugt werden, da sie intern QRegularExpression verwendet.

Diese Methode setzt die Optionen des regulären Ausdrucks zurück, berücksichtigt aber die Groß- und Kleinschreibung.

Hinweis: Der Aufruf dieser Methode aktualisiert den regulären Ausdruck, wodurch die Bindung für filterRegularExpression aufgehoben wird. Es hat jedoch keine Auswirkungen auf die filterCaseSensitivity Bindungen.

Hinweis: Setter-Funktion für die Eigenschaft filterRegularExpression.

Siehe auch setFilterCaseSensitivity(), setFilterWildcard(), setFilterFixedString(), und filterRegularExpression().

[slot] void QSortFilterProxyModel::setFilterWildcard(const QString &pattern)

Setzt den Platzhalterausdruck, der zum Filtern des Inhalts des Quellmodells verwendet wird, auf den angegebenen pattern.

Diese Methode setzt die Optionen des regulären Ausdrucks zurück, wobei die Groß- und Kleinschreibung beachtet wird.

Hinweis: Der Aufruf dieser Methode aktualisiert den regulären Ausdruck, wodurch die Bindung für filterRegularExpression aufgehoben wird. Sie hat jedoch keine Auswirkungen auf die filterCaseSensitivity Bindungen.

Siehe auch setFilterCaseSensitivity(), setFilterRegularExpression(), setFilterFixedString(), und filterRegularExpression().

[override virtual] bool QSortFilterProxyModel::setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole)

Reimplements: QAbstractProxyModel::setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role).

Siehe auch headerData().

[override virtual] void QSortFilterProxyModel::setSourceModel(QAbstractItemModel *sourceModel)

Reimplements: QAbstractProxyModel::setSourceModel(QAbstractItemModel *sourceModel).

[override virtual] QModelIndex QSortFilterProxyModel::sibling(int row, int column, const QModelIndex &idx) const

Reimplements: QAbstractProxyModel::sibling(int row, int column, const QModelIndex &idx) const.

[override virtual] void QSortFilterProxyModel::sort(int column, Qt::SortOrder order = Qt::AscendingOrder)

Reimplements: QAbstractProxyModel::sort(int column, Qt::SortOrder order).

Sortiert das Modell nach column in der angegebenen order. Wenn die Sortierreihenfolge column kleiner als Null ist, wird das Modell nach der Quellmodellzeile in der angegebenen order sortiert.

Siehe auch sortColumn().

[signal] void QSortFilterProxyModel::sortCaseSensitivityChanged(Qt::CaseSensitivity sortCaseSensitivity)

Dieses Signal wird ausgegeben, wenn sich die Groß-/Kleinschreibung für die Sortierung auf sortCaseSensitivity ändert.

Hinweis: Benachrichtigungssignal für die Eigenschaft sortCaseSensitivity.

int QSortFilterProxyModel::sortColumn() const

Gibt die aktuell für die Sortierung verwendete Spalte zurück

Dies gibt die zuletzt verwendete Sortierspalte zurück. Der Standardwert ist -1, was bedeutet, dass dieses Proxy-Modell nicht sortiert.

Siehe auch sort().

[signal] void QSortFilterProxyModel::sortLocaleAwareChanged(bool sortLocaleAware)

Dieses Signal wird ausgegeben, wenn sich die sprachabhängige Einstellung auf sortLocaleAware ändert.

Hinweis: Benachrichtigungssignal für die Eigenschaft isSortLocaleAware.

Qt::SortOrder QSortFilterProxyModel::sortOrder() const

Gibt die aktuell für die Sortierung verwendete Reihenfolge zurück

Dies gibt die zuletzt verwendete Sortierreihenfolge zurück. Der Standardwert ist Qt::AscendingOrder.

Siehe auch sort().

[signal] void QSortFilterProxyModel::sortRoleChanged(int sortRole)

Dieses Signal wird ausgegeben, wenn die Sortierrolle zu sortRole wechselt.

Hinweis: Benachrichtigungssignal für die Eigenschaft sortRole.

[override virtual] QSize QSortFilterProxyModel::span(const QModelIndex &index) const

Reimplements: QAbstractProxyModel::span(const QModelIndex &index) const.

[override virtual] Qt::DropActions QSortFilterProxyModel::supportedDropActions() const

Reimplements: QAbstractProxyModel::supportedDropActions() const.

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