QSortFilterProxyModel Class
La clase QSortFilterProxyModel proporciona soporte para ordenar y filtrar datos pasados entre otro modelo y una vista. Más...
| Cabecera: | #include <QSortFilterProxyModel> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| Hereda: | QAbstractProxyModel |
Tipos públicos
(since 6.10) enum class | Direction { Rows, Columns, Both } |
| flags | Directions |
Propiedades
|
|
Funciones públicas
| 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 |
Funciones públicas reimplementadas
| 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 |
Ranuras públicas
| void | invalidate() |
| void | setFilterFixedString(const QString &pattern) |
| void | setFilterRegularExpression(const QString &pattern) |
| void | setFilterRegularExpression(const QRegularExpression ®ularExpression) |
| void | setFilterWildcard(const QString &pattern) |
Señales
(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) |
Funciones protegidas
(since 6.9) void | beginFilterChange() |
(since 6.10) void | endFilterChange(QSortFilterProxyModel::Directions directions = Direction::Both) |
| 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, until 6.13) void | invalidateColumnsFilter() |
(until 6.13) void | invalidateFilter() |
(since 6.0, until 6.13) void | invalidateRowsFilter() |
| virtual bool | lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const |
Descripción Detallada
QSortFilterProxyModel puede utilizarse para ordenar elementos, filtrar elementos, o ambas cosas. El modelo transforma la estructura de un modelo fuente mapeando los índices del modelo que suministra a nuevos índices, correspondientes a diferentes ubicaciones, para que los utilicen las vistas. Este enfoque permite reestructurar un modelo fuente dado en lo que respecta a las vistas sin necesidad de realizar transformaciones en los datos subyacentes y sin duplicar los datos en memoria.
Supongamos que queremos ordenar y filtrar los elementos proporcionados por un modelo personalizado. El código para configurar el modelo y la vista, sin ordenar ni filtrar, tendría este aspecto:
QTreeView *treeView = new QTreeView; MyItemModel *model = new MyItemModel(this); treeView->setModel(model);
Para añadir soporte de ordenación y filtrado a MyItemModel, necesitamos crear un QSortFilterProxyModel, llamar a setSourceModel() con MyItemModel como argumento, e instalar el QSortFilterProxyModel en la vista:
QTreeView *treeView = new QTreeView; MyItemModel *sourceModel = new MyItemModel(this); QSortFilterProxyModel *proxyModel = new QSortFilterProxyModel(this); proxyModel->setSourceModel(sourceModel); treeView->setModel(proxyModel);
En este punto, ni la ordenación ni el filtrado están habilitados; los datos originales se muestran en la vista. Cualquier cambio realizado a través del QSortFilterProxyModel se aplica al modelo original.
El QSortFilterProxyModel actúa como una envoltura del modelo original. Si necesita convertir QModelIndexes de origen a índices de modelo ordenados/filtrados o viceversa, utilice mapToSource(), mapFromSource(), mapSelectionToSource() y mapSelectionFromSource().
Nota: Por defecto, el modelo reordena y filtra dinámicamente los datos cada vez que cambia el modelo original. Este comportamiento puede cambiarse estableciendo la propiedad dynamicSortFilter.
Los ejemplos Modelo Básico de Ordenación/Filtrado y Modelo Personalizado de Ordenación/Filtrado ilustran como utilizar QSortFilterProxyModel para realizar ordenaciones y filtrados básicos y como subclasificarlo para implementar comportamientos personalizados.
Ordenación
QTableView y QTreeView tienen una propiedad sortingEnabled que controla si el usuario puede ordenar la vista haciendo clic en la cabecera horizontal de la vista. Por ejemplo:
treeView->setSortingEnabled(true);
Cuando esta función está activada (por defecto está desactivada), al hacer clic en una sección de la cabecera se ordenan los elementos según esa columna. Haciendo clic repetidamente, el usuario puede alternar entre orden ascendente y descendente.

Detrás de la escena, la vista llama a la función virtual sort() en el modelo para reordenar los datos en el modelo. Para hacer que tus datos sean ordenables, puedes implementar sort() en tu modelo, o utilizar un QSortFilterProxyModel para envolver tu modelo - QSortFilterProxyModel proporciona una reimplementación genérica de sort() que opera sobre el sortRole() (Qt::DisplayRole por defecto) de los elementos y que entiende varios tipos de datos, incluyendo int, QString, y QDateTime. En los modelos jerárquicos, la ordenación se aplica recursivamente a todos los elementos hijos. Las comparaciones de cadenas distinguen entre mayúsculas y minúsculas por defecto; esto puede cambiarse configurando la propiedad sortCaseSensitivity.
El comportamiento de ordenación personalizado se consigue subclasificando QSortFilterProxyModel y reimplementando lessThan(), que se utiliza para comparar elementos. Por ejemplo:
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(); static const QRegularExpression emailPattern(u"[\\w\\.]*@[\\w\\.]*"_s); 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; }
(Este fragmento de código procede del ejemplo Modelo de ordenación/filtrado personalizado ).
Un enfoque alternativo a la ordenación es desactivar la ordenación en la vista e imponer un cierto orden al usuario. Esto se hace llamando explícitamente a sort() con la columna y el orden deseados como argumentos en el QSortFilterProxyModel (o en el modelo original si implementa sort()). Por ejemplo:
proxyModel->sort(2, Qt::AscendingOrder);
QSortFilterProxyModel puede ordenarse por la columna -1, en cuyo caso vuelve al orden de ordenación del modelo fuente subyacente.
Nota: sortColumn() devuelve la columna de ordenación utilizada más recientemente. El valor por defecto es -1, lo que significa que este modelo proxy no ordena. Además, tenga en cuenta que sort() establece sortColumn() en la columna de ordenación utilizada más recientemente.
Filtrado
Además de ordenar, QSortFilterProxyModel se puede utilizar para ocultar los elementos que no coinciden con un determinado filtro. El filtro se especifica mediante un objeto QRegularExpression y se aplica al filterRole() (Qt::DisplayRole por defecto) de cada elemento, para una columna determinada. El objeto QRegularExpression puede utilizarse para coincidir con una expresión regular, un patrón comodín o una cadena fija. Por ejemplo:
proxyModel->setFilterRegularExpression(QRegularExpression("\\.png", QRegularExpression::CaseInsensitiveOption)); proxyModel->setFilterKeyColumn(1);
En los modelos jerárquicos, el filtro se aplica recursivamente a todos los hijos. Si un elemento padre no coincide con el filtro, no se mostrará ninguno de sus hijos.
Un caso de uso común es dejar que el usuario especifique la expresión regular del filtro, un patrón comodín o una cadena fija en QLineEdit y conectar la señal textChanged() a setFilterRegularExpression(), setFilterWildcard() o setFilterFixedString() para volver a aplicar el filtro.
Se puede conseguir un comportamiento de filtrado personalizado reimplementando las funciones filterAcceptsRow() y filterAcceptsColumn(). Por ejemplo (del ejemplo de modelo de ordenación/filtrado personalizado ), la siguiente implementación ignora la propiedad filterKeyColumn y realiza el filtrado en las columnas 0, 1 y 2:
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()); }
(Este fragmento de código procede del ejemplo Custom Sort/Filter Model ).
Si está trabajando con grandes cantidades de filtrado y tiene que invocar beginFilterChange() / endFilterChange() repetidamente, utilizar beginResetModel() / endResetModel() puede ser más eficiente, dependiendo de la implementación de su modelo. Sin embargo, beginResetModel() / endResetModel() devuelve el modelo proxy a su estado original, perdiendo la información de selección, y hará que el modelo proxy sea repoblado.
Subclase de
Dado que QAbstractProxyModel y sus subclases derivan de QAbstractItemModel, muchos de los consejos sobre la subclasificación de modelos normales se aplican también a los modelos proxy. Además, cabe destacar que muchas de las implementaciones por defecto de las funciones de esta clase están escritas de forma que llamen a las funciones equivalentes del modelo fuente correspondiente. Este sencillo mecanismo de proxy puede necesitar ser anulado para modelos fuente con un comportamiento más complejo; por ejemplo, si el modelo fuente proporciona una implementación personalizada de hasChildren(), también debería proporcionar una en el modelo proxy.
Nota: Algunas directrices generales para subclasificar modelos están disponibles en la Referencia de subclasificación de modelos.
Véase también QAbstractProxyModel, QAbstractItemModel, Model/View Programming, Basic Sort/Filter Model Example, Custom Sort/Filter Model Example, y QIdentityProxyModel.
Documentación de tipos de miembros
[since 6.10] enum class QSortFilterProxyModel::Direction
flags QSortFilterProxyModel::Directions
Esta enum se utiliza para especificar la dirección a la que se aplica un filtro personalizado cuando se cambian los parámetros del filtro.
| Constante | Valor | Descripción |
|---|---|---|
QSortFilterProxyModel::Direction::Rows | 0x01 | El filtro se aplica a rows |
QSortFilterProxyModel::Direction::Columns | 0x02 | El filtro se aplica a columns |
QSortFilterProxyModel::Direction::Both | Rows | Columns | El filtro se aplica tanto a filas como a columnas |
Este enum se introdujo en Qt 6.10.
El tipo Directions es un typedef para QFlags<Direction>. Almacena una combinación OR de valores de Dirección.
Véase también beginFilterChange() y endFilterChange().
Documentación de Propiedades
[bindable, since 6.0] autoAcceptChildRows : bool
Nota: Esta propiedad admite los enlaces QProperty.
si es true el modelo proxy no filtrará los hijos de las filas aceptadas, incluso si ellos mismos serían filtrados de otro modo.
El valor por defecto es false.
Esta propiedad se introdujo en Qt 6.0.
Funciones de acceso:
| bool | autoAcceptChildRows() const |
| void | setAutoAcceptChildRows(bool accept) |
Notifier signal:
| void | autoAcceptChildRowsChanged(bool autoAcceptChildRows) |
Véase también recursiveFilteringEnabled y filterAcceptsRow().
[bindable] dynamicSortFilter : bool
Nota: Esta propiedad admite los enlaces QProperty.
Esta propiedad indica si el modelo proxy se ordena y filtra dinámicamente cuando cambia el contenido del modelo fuente.
Ten en cuenta que no debes actualizar el modelo fuente a través del modelo proxy cuando dynamicSortFilter es true. Por ejemplo, si establece el modelo proxy en QComboBox, el uso de funciones que actualizan el modelo, por ejemplo, addItem(), no funcionará como se espera. Una alternativa es establecer dynamicSortFilter en false y llamar a sort() después de añadir elementos a QComboBox.
El valor por defecto es true.
Funciones de acceso:
| bool | dynamicSortFilter() const |
| void | setDynamicSortFilter(bool enable) |
Véase también sortColumn().
[bindable] filterCaseSensitivity : Qt::CaseSensitivity
Nota: Esta propiedad es compatible con los enlaces QProperty.
Esta propiedad contiene la distinción entre mayúsculas y minúsculas del patrón QRegularExpression utilizado para filtrar el contenido del modelo fuente.
Por defecto, el filtro distingue entre mayúsculas y minúsculas.
Nota: Establecer esta propiedad propaga la nueva sensibilidad a mayúsculas y minúsculas a la propiedad filterRegularExpression, y por tanto rompe su vinculación. Del mismo modo, si se define explícitamente filterRegularExpression, se cambia la sensibilidad a mayúsculas y minúsculas actual, rompiendo así su vinculación.
Funciones de acceso:
| Qt::CaseSensitivity | filterCaseSensitivity() const |
| void | setFilterCaseSensitivity(Qt::CaseSensitivity cs) |
Señal del notificador:
| void | filterCaseSensitivityChanged(Qt::CaseSensitivity filterCaseSensitivity) |
Véase también filterRegularExpression y sortCaseSensitivity.
[bindable] filterKeyColumn : int
Nota: Esta propiedad admite los enlaces QProperty.
Esta propiedad contiene la columna de la que se lee la clave utilizada para filtrar el contenido del modelo fuente.
El valor por defecto es 0. Si el valor es -1, las claves se leerán de todas las columnas.
Funciones de acceso:
| int | filterKeyColumn() const |
| void | setFilterKeyColumn(int column) |
[bindable] filterRegularExpression : QRegularExpression
Nota: Esta propiedad admite enlaces QProperty.
Esta propiedad contiene el QRegularExpression utilizado para filtrar el contenido del modelo fuente.
Al establecer esta propiedad a través de la sobrecarga QRegularExpression se sobreescribe el filterCaseSensitivity actual. Por defecto, QRegularExpression es una cadena vacía que coincide con todos los contenidos.
Si no se define QRegularExpression o se define una cadena vacía, se aceptará todo el contenido del modelo fuente.
Nota: Al establecer esta propiedad se propaga la distinción entre mayúsculas y minúsculas de la nueva expresión regular a la propiedad filterCaseSensitivity, por lo que se rompe su vinculación. Del mismo modo, si se define explícitamente filterCaseSensitivity, cambia la sensibilidad a mayúsculas y minúsculas de la expresión regular actual, rompiendo así su vinculación.
Funciones de acceso:
| QRegularExpression | filterRegularExpression() const |
| void | setFilterRegularExpression(const QString &pattern) |
| void | setFilterRegularExpression(const QRegularExpression ®ularExpression) |
Véase también filterCaseSensitivity, setFilterWildcard(), y setFilterFixedString().
[bindable] filterRole : int
Nota: Esta propiedad admite los enlaces QProperty.
Esta propiedad contiene el rol del ítem que se utiliza para consultar los datos del modelo fuente cuando se filtran ítems.
El valor por defecto es Qt::DisplayRole.
Funciones de acceso:
| int | filterRole() const |
| void | setFilterRole(int role) |
Señal de notificador:
| void | filterRoleChanged(int filterRole) |
Véase también filterAcceptsRow().
[bindable] isSortLocaleAware : bool
Nota: Esta propiedad admite los enlaces QProperty.
Esta propiedad contiene la configuración local utilizada para comparar cadenas al ordenarlas.
Por defecto, la ordenación no es local.
Funciones de acceso:
| bool | isSortLocaleAware() const |
| void | setSortLocaleAware(bool on) |
Señal notificadora:
| void | sortLocaleAwareChanged(bool sortLocaleAware) |
Véase también sortCaseSensitivity y lessThan().
[bindable] recursiveFilteringEnabled : bool
Nota: Esta propiedad admite enlaces QProperty.
Esta propiedad indica si el filtro debe aplicarse recursivamente sobre los hijos, y para cualquier hijo que coincida, sus padres también serán visibles.
El valor por defecto es false.
Funciones de acceso:
| bool | isRecursiveFilteringEnabled() const |
| void | setRecursiveFilteringEnabled(bool recursive) |
Señal del notificador:
| void | recursiveFilteringEnabledChanged(bool recursiveFilteringEnabled) |
Véase también autoAcceptChildRows y filterAcceptsRow().
[bindable] sortCaseSensitivity : Qt::CaseSensitivity
Nota: Esta propiedad es compatible con QProperty.
Esta propiedad contiene el ajuste de sensibilidad a mayúsculas/minúsculas utilizado para comparar cadenas cuando se ordenan
Por defecto, la ordenación distingue entre mayúsculas y minúsculas.
Funciones de acceso:
| Qt::CaseSensitivity | sortCaseSensitivity() const |
| void | setSortCaseSensitivity(Qt::CaseSensitivity cs) |
Señal de notificador:
| void | sortCaseSensitivityChanged(Qt::CaseSensitivity sortCaseSensitivity) |
Véase también filterCaseSensitivity y lessThan().
[bindable] sortRole : int
Nota: Esta propiedad admite los enlaces QProperty.
Esta propiedad contiene el rol del ítem que se utiliza para consultar los datos del modelo fuente cuando se ordenan los ítems.
El valor por defecto es Qt::DisplayRole.
Funciones de acceso:
| int | sortRole() const |
| void | setSortRole(int role) |
Señal de notificador:
| void | sortRoleChanged(int sortRole) |
Véase también lessThan().
Documentación de las funciones miembro
[explicit] QSortFilterProxyModel::QSortFilterProxyModel(QObject *parent = nullptr)
Construye un modelo de filtro de clasificación con la dirección parent.
[virtual noexcept] QSortFilterProxyModel::~QSortFilterProxyModel()
Destruye este modelo de filtro de clasificación.
[signal, since 6.0] void QSortFilterProxyModel::autoAcceptChildRowsChanged(bool autoAcceptChildRows)
Esta señal se emite cuando cambia el valor de la propiedad autoAcceptChildRows.
Nota: Señal notificadora para la propiedad autoAcceptChildRows.
Esta función se introdujo en Qt 6.0.
Véase también autoAcceptChildRows.
[protected, since 6.9] void QSortFilterProxyModel::beginFilterChange()
Prepara un cambio del filtro.
Se debe llamar a esta función si está implementando un filtrado personalizado (por ejemplo, filterAcceptsRow()), y su parámetro de filtrado está a punto de ser cambiado.
void MySortFilterProxyModel::setFilterMaximumDate(QDate date) { beginFilterChange(); maxDate = date; endFilterChange(QSortFilterProxyModel::Direction::Rows); }
Una vez cambiado el filtro, llama a endFilterChange() con Direction::Rows para filtros de filas, Direction::Columns para filtros de columnas, o Direction::Columns|Direction::Rows si se filtran tanto filas como columnas.
Esta función se introdujo en Qt 6.9.
Véase también endFilterChange().
[override virtual] QModelIndex QSortFilterProxyModel::buddy(const QModelIndex &index) const
Reimplementa: QAbstractProxyModel::buddy(const QModelIndex &index) const.
[override virtual] bool QSortFilterProxyModel::canFetchMore(const QModelIndex &parent) const
Reimplementa: QAbstractProxyModel::canFetchMore(const QModelIndex &parent) const.
[override virtual] int QSortFilterProxyModel::columnCount(const QModelIndex &parent = QModelIndex()) const
Reimplementa: QAbstractItemModel::columnCount(const QModelIndex &parent) const.
[override virtual] QVariant QSortFilterProxyModel::data(const QModelIndex &index, int role = Qt::DisplayRole) const
Reimplementa: QAbstractProxyModel::data(const QModelIndex &proxyIndex, int role) const.
Véase también setData().
[override virtual] bool QSortFilterProxyModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)
Reimplementa: QAbstractProxyModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent).
[protected, since 6.10] void QSortFilterProxyModel::endFilterChange(QSortFilterProxyModel::Directions directions = Direction::Both)
Invalida el filtrado actual después de que el parámetro del filtro haya cambiado.
Se debe llamar a esta función si se implementa un filtrado personalizado (por ejemplo, filterAcceptsRow()), y los parámetros de filtrado han cambiado. El parámetro directions especifica si el filtro personalizado afecta a filas, columnas o ambas.
Llame a beginFilterChange() cuando el parámetro del filtro esté a punto de cambiar, y siga con una llamada a esta función una vez que los parámetros del filtro hayan cambiado. Llame con directions establecido en Direction::Rows para filtros de filas (es decir, filterAcceptsRow() está implementado), Direction::Columns para filtros de columnas (es decir, filterAcceptsColumn() está implementado), o Direction::Both si ambas funciones de filtro están implementadas.
Esta función se introdujo en Qt 6.10.
[override virtual] void QSortFilterProxyModel::fetchMore(const QModelIndex &parent)
Reimplementa: QAbstractProxyModel::fetchMore(const QModelIndex &parent).
[virtual protected] bool QSortFilterProxyModel::filterAcceptsColumn(int source_column, const QModelIndex &source_parent) const
Devuelve true si el elemento de la columna indicada por los campos source_column y source_parent debe incluirse en el modelo; en caso contrario, devuelve false.
Nota: La implementación por defecto siempre devuelve true. Debe reimplementar este método para obtener el comportamiento descrito.
Véase también filterAcceptsRow(), setFilterFixedString(), setFilterRegularExpression() y setFilterWildcard().
[virtual protected] bool QSortFilterProxyModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const
Devuelve true si el elemento de la fila indicada por source_row y source_parent debe incluirse en el modelo; en caso contrario, devuelve false.
La implementación por defecto devuelve true si el valor que contiene el elemento en cuestión coincide con la cadena de filtro, la cadena comodín o la expresión regular.
Nota: Por defecto, Qt::DisplayRole se utiliza para determinar si la fila debe ser aceptada o no. Esto puede cambiarse estableciendo la propiedad filterRole.
Véase también filterAcceptsColumn(), setFilterFixedString(), setFilterRegularExpression() y setFilterWildcard().
[signal] void QSortFilterProxyModel::filterCaseSensitivityChanged(Qt::CaseSensitivity filterCaseSensitivity)
Esta señal se emite cuando la sensibilidad a mayúsculas/minúsculas del filtro cambia a filterCaseSensitivity.
Nota: Señal notificadora para la propiedad filterCaseSensitivity.
[signal] void QSortFilterProxyModel::filterRoleChanged(int filterRole)
Esta señal se emite cuando el rol del filtro cambia a filterRole.
Nota: Señal notificadora para la propiedad filterRole.
[override virtual] Qt::ItemFlags QSortFilterProxyModel::flags(const QModelIndex &index) const
Reimplementa: QAbstractProxyModel::flags(const QModelIndex &index) const.
[override virtual] bool QSortFilterProxyModel::hasChildren(const QModelIndex &parent = QModelIndex()) const
Reimplementa: QAbstractProxyModel::hasChildren(const QModelIndex &parent) const.
[override virtual] QVariant QSortFilterProxyModel::headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const
Reimplementa: QAbstractProxyModel::headerData(int section, Qt::Orientation orientation, int role) const.
Véase también setHeaderData().
[override virtual] QModelIndex QSortFilterProxyModel::index(int row, int column, const QModelIndex &parent = QModelIndex()) const
Reimplementa: QAbstractItemModel::index(int fila, int columna, const QModelIndex &parent) const.
[override virtual] bool QSortFilterProxyModel::insertColumns(int column, int count, const QModelIndex &parent = QModelIndex())
Reimplementa: QAbstractItemModel::insertColumns(int column, int count, const QModelIndex &parent).
[override virtual] bool QSortFilterProxyModel::insertRows(int row, int count, const QModelIndex &parent = QModelIndex())
Reimplementa: QAbstractItemModel::insertRows(int fila, int recuento, const QModelIndex &parent).
[slot] void QSortFilterProxyModel::invalidate()
Invalida la ordenación y el filtrado actuales.
Véase también beginFilterChange() y endFilterChange().
[protected, since 6.0, until 6.13] void QSortFilterProxyModel::invalidateColumnsFilter()
Esta función dejará de utilizarse en la versión 6.13.
utilice beginFilterChange() y endFilterChange(Direction::Rows) en su lugar.
Invalida el filtrado actual de las columnas.
Esta función debe invocarse si está implementando un filtrado personalizado (mediante filterAcceptsColumn()), y sus parámetros de filtrado han cambiado. Se diferencia de invalidateFilter() en que no invocará a filterAcceptsRow(), sino sólo a filterAcceptsColumn(). Puede utilizar esta opción en lugar de invalidateFilter() si desea ocultar o mostrar una columna cuyas filas no cambien.
Antes de que cambien los parámetros del filtro, llame a beginFilterChange().
Esta función se introdujo en Qt 6.0.
Véase también invalidate(), invalidateRowsFilter(), y beginFilterChange().
[protected, until 6.13] void QSortFilterProxyModel::invalidateFilter()
Esta función dejará de utilizarse en la versión 6.13.
utilice beginFilterChange() y endFilterChange() en su lugar.
Invalida el filtrado actual.
Esta función debe invocarse si está implementando un filtrado personalizado (por ejemplo, filterAcceptsRow()), y sus parámetros de filtrado han cambiado.
Antes de cambiar los parámetros del filtro, llame a beginFilterChange().
void MySortFilterProxyModel::setFilterMaximumDate(QDate date) { beginFilterChange(); maxDate = date; endFilterChange(QSortFilterProxyModel::Direction::Rows); }
Véase también invalidate(), invalidateColumnsFilter(), invalidateRowsFilter() y beginFilterChange().
[protected, since 6.0, until 6.13] void QSortFilterProxyModel::invalidateRowsFilter()
Esta función dejará de utilizarse en la versión 6.13.
utilice beginFilterChange() y endFilterChange(Direction::Columns) en su lugar.
Invalida el filtrado actual para las filas.
Esta función debe invocarse si está implementando un filtrado personalizado (mediante filterAcceptsRow()), y sus parámetros de filtrado han cambiado. Se diferencia de invalidateFilter() en que no invocará a filterAcceptsColumn(), sino sólo a filterAcceptsRow(). Puede utilizar esta opción en lugar de invalidateFilter() si desea ocultar o mostrar una fila cuyas columnas no cambien.
Antes de que cambien los parámetros del filtro, llame a beginFilterChange().
Esta función se introdujo en Qt 6.0.
Véase también invalidate(), invalidateFilter(), y invalidateColumnsFilter().
[virtual protected] bool QSortFilterProxyModel::lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const
Devuelve true si el valor del elemento al que hace referencia el índice dado source_left es menor que el valor del elemento al que hace referencia el índice dado source_right, en caso contrario devuelve false.
Esta función se utiliza como operador < al ordenar, y maneja los siguientes tipos QVariant:
- QMetaType::Int
- QMetaType::UInt
- QMetaType::LongLong
- QMetaType::ULongLong
- QMetaType::Float
- QMetaType::Double
- QMetaType::QChar
- QMetaType::QDate
- QMetaType::QTime
- QMetaType::QDateTime
- QMetaType::QString
Cualquier otro tipo se convertirá a QString utilizando QVariant::toString().
La comparación de QStrings distingue entre mayúsculas y minúsculas por defecto; esto puede cambiarse utilizando la propiedad sortCaseSensitivity.
Por defecto, el Qt::DisplayRole asociado con el QModelIndexes utilizado para las comparaciones. Esto puede cambiarse estableciendo la propiedad sortRole.
Nota: Los índices introducidos corresponden al modelo de origen.
Véase también sortRole, sortCaseSensitivity, y dynamicSortFilter.
[override virtual] QModelIndex QSortFilterProxyModel::mapFromSource(const QModelIndex &sourceIndex) const
Reimplementa: QAbstractProxyModel::mapFromSource(const QModelIndex &sourceIndex) const.
Devuelve el índice del modelo en QSortFilterProxyModel dado el sourceIndex del modelo fuente.
Ver también mapToSource().
[override virtual] QItemSelection QSortFilterProxyModel::mapSelectionFromSource(const QItemSelection &sourceSelection) const
Reimplementa: QAbstractProxyModel::mapSelectionFromSource(const QItemSelection &sourceSelection) const.
[override virtual] QItemSelection QSortFilterProxyModel::mapSelectionToSource(const QItemSelection &proxySelection) const
Reimplementa: QAbstractProxyModel::mapSelectionToSource(const QItemSelection &proxySelection) const.
[override virtual] QModelIndex QSortFilterProxyModel::mapToSource(const QModelIndex &proxyIndex) const
Reimplementa: QAbstractProxyModel::mapToSource(const QModelIndex &proxyIndex) const.
Devuelve el índice del modelo fuente correspondiente al proxyIndex dado del modelo del filtro de ordenación.
Véase también 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
Reimplementa: 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
Reimplementa: QAbstractProxyModel::mimeData(const QModelIndexList &indexes) const.
[override virtual] QStringList QSortFilterProxyModel::mimeTypes() const
Reimplementa: QAbstractProxyModel::mimeTypes() const.
[override virtual] QModelIndex QSortFilterProxyModel::parent(const QModelIndex &child) const
Reimplementa: QAbstractItemModel::parent(const QModelIndex &index) const.
[signal] void QSortFilterProxyModel::recursiveFilteringEnabledChanged(bool recursiveFilteringEnabled)
Esta señal se emite cuando la configuración del filtro recursivo se cambia a recursiveFilteringEnabled.
Nota: Señal notificadora para la propiedad recursiveFilteringEnabled.
[override virtual] bool QSortFilterProxyModel::removeColumns(int column, int count, const QModelIndex &parent = QModelIndex())
Reimplementa: QAbstractItemModel::removeColumns(int columna, int cuenta, const QModelIndex &parent).
[override virtual] bool QSortFilterProxyModel::removeRows(int row, int count, const QModelIndex &parent = QModelIndex())
Reimplementa: QAbstractItemModel::removeRows(int fila, int recuento, const QModelIndex &parent).
[override virtual] int QSortFilterProxyModel::rowCount(const QModelIndex &parent = QModelIndex()) const
Reimplementa: QAbstractItemModel::rowCount(const QModelIndex &parent) const.
[override virtual] bool QSortFilterProxyModel::setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole)
Reimplementa: QAbstractProxyModel::setData(const QModelIndex &index, const QVariant &value, int role).
Véase también data().
[slot] void QSortFilterProxyModel::setFilterFixedString(const QString &pattern)
Establece la cadena fija utilizada para filtrar el contenido del modelo fuente en la dirección pattern.
Este método restablecerá las opciones de la expresión regular pero respetará la distinción entre mayúsculas y minúsculas.
Nota: La invocación de este método actualiza la expresión regular, rompiendo así la vinculación para filterRegularExpression. Sin embargo, no tiene ningún efecto sobre las vinculaciones de filterCaseSensitivity.
Véase también setFilterCaseSensitivity(), setFilterRegularExpression(), setFilterWildcard(), y filterRegularExpression().
[slot] void QSortFilterProxyModel::setFilterRegularExpression(const QString &pattern)
Establece la expresión regular utilizada para filtrar el contenido del modelo fuente en pattern.
Este método debería preferirse para código nuevo, ya que utilizará QRegularExpression internamente.
Este método restablecerá las opciones de la expresión regular pero respetará la distinción entre mayúsculas y minúsculas.
Nota: La llamada a este método actualiza la expresión regular, rompiendo así la vinculación para filterRegularExpression. Sin embargo, no tiene ningún efecto sobre las vinculaciones de filterCaseSensitivity.
Nota: Función Setter para la propiedad filterRegularExpression.
Nota: Esta ranura está sobrecargada. Para conectarse a esta ranura:
// Connect using qOverload:
connect(sender, &SenderClass::signal,
sortFilterProxyModel, qOverload(&QSortFilterProxyModel::setFilterRegularExpression));
// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
sortFilterProxyModel, [receiver = sortFilterProxyModel](const QString &pattern) { receiver->setFilterRegularExpression(pattern); }); Véase también setFilterCaseSensitivity(), setFilterWildcard(), setFilterFixedString() y filterRegularExpression().
[slot] void QSortFilterProxyModel::setFilterWildcard(const QString &pattern)
Establece la expresión comodín utilizada para filtrar el contenido del modelo de origen en la dirección pattern.
Este método restablecerá las opciones de la expresión regular pero respetará la distinción entre mayúsculas y minúsculas.
Nota: La invocación de este método actualiza la expresión regular, rompiendo así la vinculación de filterRegularExpression. Sin embargo, no tiene ningún efecto sobre las vinculaciones de filterCaseSensitivity.
Véase también setFilterCaseSensitivity(), setFilterRegularExpression(), setFilterFixedString(), y filterRegularExpression().
[override virtual] bool QSortFilterProxyModel::setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole)
Reimplementa: QAbstractProxyModel::setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role).
Véase también headerData().
[override virtual] void QSortFilterProxyModel::setSourceModel(QAbstractItemModel *sourceModel)
Reimplementa: QAbstractProxyModel::setSourceModel(QAbstractItemModel *sourceModel).
[override virtual] QModelIndex QSortFilterProxyModel::sibling(int row, int column, const QModelIndex &idx) const
Reimplementa: QAbstractProxyModel::sibling(int fila, int columna, const QModelIndex &idx) const.
[override virtual] void QSortFilterProxyModel::sort(int column, Qt::SortOrder order = Qt::AscendingOrder)
Reimplementa: QAbstractProxyModel::sort(int columna, Qt::SortOrder orden).
Ordena el modelo por column en el order dado . Si el orden column es menor que cero, el modelo se ordenará por la fila del modelo de origen en el order dado.
Véase también sortColumn().
[signal] void QSortFilterProxyModel::sortCaseSensitivityChanged(Qt::CaseSensitivity sortCaseSensitivity)
Esta señal se emite cuando la distinción entre mayúsculas y minúsculas para la ordenación cambia a sortCaseSensitivity.
Nota: Señal notificadora para la propiedad sortCaseSensitivity.
int QSortFilterProxyModel::sortColumn() const
Devuelve la columna utilizada actualmente para ordenar
Devuelve la columna de ordenación utilizada más recientemente. El valor por defecto es -1, lo que significa que este modelo proxy no ordena.
Véase también sort().
[signal] void QSortFilterProxyModel::sortLocaleAwareChanged(bool sortLocaleAware)
Esta señal se emite cuando la configuración consciente de la configuración regional cambia a sortLocaleAware.
Nota: Señal notificadora para la propiedad isSortLocaleAware.
Qt::SortOrder QSortFilterProxyModel::sortOrder() const
Devuelve el orden utilizado actualmente para ordenar
Devuelve el orden de clasificación utilizado más recientemente. El valor por defecto es Qt::AscendingOrder.
Véase también sort().
[signal] void QSortFilterProxyModel::sortRoleChanged(int sortRole)
Esta señal se emite cuando el rol de ordenación cambia a sortRole.
Nota: Señal notificadora para la propiedad sortRole.
[override virtual] QSize QSortFilterProxyModel::span(const QModelIndex &index) const
Reimplementa: QAbstractProxyModel::span(const QModelIndex &index) const.
[override virtual] Qt::DropActions QSortFilterProxyModel::supportedDropActions() const
Reimplementa: QAbstractProxyModel::supportedDropActions() const.
© 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.