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 ®ularExpression) |
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.
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:
- QMetaType::Int
- QMetaType::UInt
- QMetaType::LongLong
- QMetaType::ULongLong
- QMetaType::Float
- QMetaType::Double
- QMetaType::QChar
- QMetaType::QDate
- QMetaType::QTime
- QMetaType::QDateTime
- QMetaType::QString
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.