QItemSelectionModel Class
La clase QItemSelectionModel mantiene un registro de los elementos seleccionados de una vista. Más...
| Cabecera: | #include <QItemSelectionModel> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| Hereda: | QObject |
Tipos públicos
| enum | SelectionFlag { NoUpdate, Clear, Select, Deselect, Toggle, …, ClearAndSelect } |
| flags | SelectionFlags |
Propiedades
- selectedIndexes : QModelIndexList
Funciones públicas
| QItemSelectionModel(QAbstractItemModel *model = nullptr) | |
| QItemSelectionModel(QAbstractItemModel *model, QObject *parent) | |
| virtual | ~QItemSelectionModel() |
| QBindable<QAbstractItemModel *> | bindableModel() |
| bool | columnIntersectsSelection(int column, const QModelIndex &parent = QModelIndex()) const |
| QModelIndex | currentIndex() const |
| bool | hasSelection() const |
| bool | isColumnSelected(int column, const QModelIndex &parent = QModelIndex()) const |
| bool | isRowSelected(int row, const QModelIndex &parent = QModelIndex()) const |
| bool | isSelected(const QModelIndex &index) const |
| QAbstractItemModel * | model() |
| const QAbstractItemModel * | model() const |
| bool | rowIntersectsSelection(int row, const QModelIndex &parent = QModelIndex()) const |
| QModelIndexList | selectedColumns(int row = 0) const |
| QModelIndexList | selectedIndexes() const |
| QModelIndexList | selectedRows(int column = 0) const |
| const QItemSelection | selection() const |
| void | setModel(QAbstractItemModel *model) |
Ranuras públicas
| virtual void | clear() |
| virtual void | clearCurrentIndex() |
| void | clearSelection() |
| virtual void | reset() |
| virtual void | select(const QItemSelection &selection, QItemSelectionModel::SelectionFlags command) |
| virtual void | select(const QModelIndex &index, QItemSelectionModel::SelectionFlags command) |
| virtual void | setCurrentIndex(const QModelIndex &index, QItemSelectionModel::SelectionFlags command) |
Señales
| void | currentChanged(const QModelIndex ¤t, const QModelIndex &previous) |
| void | currentColumnChanged(const QModelIndex ¤t, const QModelIndex &previous) |
| void | currentRowChanged(const QModelIndex ¤t, const QModelIndex &previous) |
| void | modelChanged(QAbstractItemModel *model) |
| void | selectionChanged(const QItemSelection &selected, const QItemSelection &deselected) |
Funciones protegidas
| void | emitSelectionChanged(const QItemSelection &newSelection, const QItemSelection &oldSelection) |
Descripción Detallada
Un QItemSelectionModel mantiene un registro de los elementos seleccionados en una vista, o en varias vistas en el mismo modelo. También realiza un seguimiento del elemento actualmente seleccionado en una vista.
La clase QItemSelectionModel es una de las Clases Modelo/Vista y forma parte del framework modelo/vista de Qt.
Los elementos seleccionados se almacenan utilizando rangos. Siempre que quieras modificar los elementos seleccionados utiliza select() y proporciona un QItemSelection, o un QModelIndex y un QItemSelectionModel::SelectionFlag.
El QItemSelectionModel adopta un enfoque de dos capas para la gestión de la selección, tratando tanto los elementos seleccionados que han sido confirmados como los elementos que forman parte de la selección actual. Los elementos seleccionados actualmente forman parte de la selección interactiva actual (por ejemplo, con la selección por banda elástica o las selecciones por teclado).
Para actualizar los elementos seleccionados en ese momento, utilice la combinación bitwise OR de QItemSelectionModel::Current y cualquiera de los otros comandos SelectionFlags. Si omite el comando QItemSelectionModel::Current, se creará una nueva selección actual, y la anterior se añadirá a toda la selección. Todas las funciones operan en ambas capas; por ejemplo, selecteditems() devolverá elementos de ambas capas.
Nota: Desde 5.5, model, hasSelection, y currentIndex son propiedades de meta-objetos.
Véase también Programación Modelo/Vista y QAbstractItemModel.
Documentación de tipos de miembros
enum QItemSelectionModel::SelectionFlag
flags QItemSelectionModel::SelectionFlags
Este enum describe la forma en que se actualizará el modelo de selección.
| Constante | Valor | Descripción |
|---|---|---|
QItemSelectionModel::NoUpdate | 0x0000 | No se realizará ninguna selección. |
QItemSelectionModel::Clear | 0x0001 | Se borrará toda la selección. |
QItemSelectionModel::Select | 0x0002 | Se seleccionarán todos los índices especificados. |
QItemSelectionModel::Deselect | 0x0004 | Se deseleccionarán todos los índices especificados. |
QItemSelectionModel::Toggle | 0x0008 | Se seleccionarán o deseleccionarán todos los índices especificados en función de su estado actual. |
QItemSelectionModel::Current | 0x0010 | Se actualizará la selección actual. |
QItemSelectionModel::Rows | 0x0020 | Todos los índices se expandirán para abarcar las filas. |
QItemSelectionModel::Columns | 0x0040 | Todos los índices se expandirán para abarcar columnas. |
QItemSelectionModel::SelectCurrent | Select | Current | Una combinación de Seleccionar y Actual, proporcionada por conveniencia. |
QItemSelectionModel::ToggleCurrent | Toggle | Current | Una combinación de Alternar y Actual, proporcionada por conveniencia. |
QItemSelectionModel::ClearAndSelect | Clear | Select | Una combinación de Clear y Select, por comodidad. |
El tipo SelectionFlags es un typedef para QFlags<SelectionFlag>. Almacena una combinación OR de valores SelectionFlag.
Documentación de Propiedades
[read-only] selectedIndexes : QModelIndexList
Funciones de acceso:
| QModelIndexList | selectedIndexes() const |
Señal de notificador:
| void | selectionChanged(const QItemSelection &selected, const QItemSelection &deselected) |
Documentación de la función miembro
[explicit] QItemSelectionModel::QItemSelectionModel(QAbstractItemModel *model = nullptr)
Construye un modelo de selección que opera sobre el elemento especificado model.
[explicit] QItemSelectionModel::QItemSelectionModel(QAbstractItemModel *model, QObject *parent)
Construye un modelo de selección que opera sobre el elemento especificado model con parent.
[virtual noexcept] QItemSelectionModel::~QItemSelectionModel()
Destruye el modelo de selección.
[virtual slot] void QItemSelectionModel::clear()
Borra el modelo de selección. Emite selectionChanged() y currentChanged().
[virtual slot] void QItemSelectionModel::clearCurrentIndex()
Borra el índice actual. Emite currentChanged().
[slot] void QItemSelectionModel::clearSelection()
Borra la selección en el modelo de selección. Emite selectionChanged().
[invokable] bool QItemSelectionModel::columnIntersectsSelection(int column, const QModelIndex &parent = QModelIndex()) const
Devuelve true si hay algún elemento seleccionado en column con el parent dado.
Nota: Desde Qt 5.15, el argumento por defecto para parent es un índice de modelo vacío.
Nota: Esta función puede invocarse a través del sistema de meta-objetos y desde QML. Véase Q_INVOKABLE.
[signal] void QItemSelectionModel::currentChanged(const QModelIndex ¤t, const QModelIndex &previous)
Esta señal se emite cada vez que cambia el elemento actual. El índice del elemento del modelo previous se sustituye por el índice current como elemento actual de la selección.
Tenga en cuenta que esta señal no se emitirá cuando se restablezca el modelo del elemento.
Véase también currentIndex(), setCurrentIndex(), y selectionChanged().
[signal] void QItemSelectionModel::currentColumnChanged(const QModelIndex ¤t, const QModelIndex &previous)
Esta señal se emite si el elemento current cambia y su columna es diferente a la columna del elemento actual previous.
Ten en cuenta que esta señal no se emitirá cuando se restablezca el modelo del elemento.
Véase también currentChanged(), currentRowChanged(), currentIndex(), y setCurrentIndex().
QModelIndex QItemSelectionModel::currentIndex() const
Devuelve el índice del elemento del modelo para el elemento actual, o un índice no válido si no hay ningún elemento actual.
Véase también setCurrentIndex().
[signal] void QItemSelectionModel::currentRowChanged(const QModelIndex ¤t, const QModelIndex &previous)
Esta señal se emite si el elemento current cambia y su fila es diferente de la fila del elemento actual previous.
Ten en cuenta que esta señal no se emitirá cuando se restablezca el modelo del elemento.
Véase también currentChanged(), currentColumnChanged(), currentIndex(), y setCurrentIndex().
[protected] void QItemSelectionModel::emitSelectionChanged(const QItemSelection &newSelection, const QItemSelection &oldSelection)
Compara las dos selecciones newSelection y oldSelection y emite selectionChanged() con los elementos deseleccionados y seleccionados.
bool QItemSelectionModel::hasSelection() const
Devuelve true si el modelo de selección contiene algún elemento seleccionado, en caso contrario devuelve false.
[invokable] bool QItemSelectionModel::isColumnSelected(int column, const QModelIndex &parent = QModelIndex()) const
Devuelve true si todos los elementos están seleccionados en column con el parent dado.
Tenga en cuenta que esta función suele ser más rápida que llamar a isSelected() en todos los elementos de la misma columna y que se ignoran los elementos no seleccionables.
Nota: Desde Qt 5.15, el argumento por defecto para parent es un índice de modelo vacío.
Nota: Esta función puede invocarse a través del sistema de meta-objetos y desde QML. Véase Q_INVOKABLE.
[invokable] bool QItemSelectionModel::isRowSelected(int row, const QModelIndex &parent = QModelIndex()) const
Devuelve true si todos los elementos están seleccionados en row con el parent dado.
Tenga en cuenta que esta función suele ser más rápida que llamar a isSelected() en todos los elementos de la misma fila y que se ignoran los elementos no seleccionables.
Nota: Desde Qt 5.15, el argumento por defecto para parent es un índice de modelo vacío.
Nota: Esta función puede invocarse a través del sistema de metaobjetos y desde QML. Véase Q_INVOKABLE.
[invokable] bool QItemSelectionModel::isSelected(const QModelIndex &index) const
Devuelve true si el elemento del modelo dado index está seleccionado.
Nota: Esta función puede invocarse a través del sistema de metaobjetos y desde QML. Véase Q_INVOKABLE.
QAbstractItemModel *QItemSelectionModel::model()
Devuelve el modelo de artículo operado por el modelo de selección.
Véase también setModel().
const QAbstractItemModel *QItemSelectionModel::model() const
Devuelve el modelo de artículo operado por el modelo de selección.
[signal] void QItemSelectionModel::modelChanged(QAbstractItemModel *model)
Esta señal se emite cuando model se establece correctamente con setModel().
Véase también model() y setModel().
[virtual slot] void QItemSelectionModel::reset()
Borra el modelo de selección. No emite ninguna señal.
[invokable] bool QItemSelectionModel::rowIntersectsSelection(int row, const QModelIndex &parent = QModelIndex()) const
Devuelve true si hay algún elemento seleccionado en row con el parent dado.
Nota: Desde Qt 5.15, el argumento por defecto para parent es un índice de modelo vacío.
Nota: Esta función puede invocarse a través del sistema de meta-objetos y desde QML. Véase Q_INVOKABLE.
[virtual slot] void QItemSelectionModel::select(const QItemSelection &selection, QItemSelectionModel::SelectionFlags command)
Selecciona el elemento selection utilizando el command especificado y emite selectionChanged().
Nota: Esta ranura está sobrecargada. Para conectarse a esta ranura:
// Connect using qOverload:
connect(sender, &SenderClass::signal,
itemSelectionModel, qOverload(&QItemSelectionModel::select));
// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
itemSelectionModel, [receiver = itemSelectionModel](const QItemSelection &selection, QItemSelectionModel::SelectionFlags command) { receiver->select(selection, command); }); Véase también QItemSelectionModel::SelectionFlag.
[virtual slot] void QItemSelectionModel::select(const QModelIndex &index, QItemSelectionModel::SelectionFlags command)
Selecciona el elemento del modelo index utilizando el command especificado y emite selectionChanged().
Nota: Esta ranura está sobrecargada. Para conectarse a esta ranura:
// Connect using qOverload:
connect(sender, &SenderClass::signal,
itemSelectionModel, qOverload(&QItemSelectionModel::select));
// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
itemSelectionModel, [receiver = itemSelectionModel](const QModelIndex &index, QItemSelectionModel::SelectionFlags command) { receiver->select(index, command); }); Véase también QItemSelectionModel::SelectionFlags.
[invokable] QModelIndexList QItemSelectionModel::selectedColumns(int row = 0) const
Devuelve los índices en el row dado para las columnas en las que todas las filas están seleccionadas.
Nota: Esta función puede invocarse a través del sistema de metaobjetos y desde QML. Véase Q_INVOKABLE.
Véase también selectedIndexes() y selectedRows().
QModelIndexList QItemSelectionModel::selectedIndexes() const
Devuelve una lista de todos los índices de elementos del modelo seleccionados. La lista no contiene duplicados y no está ordenada.
Nota: Función Getter para la propiedad selectedIndexes.
[invokable] QModelIndexList QItemSelectionModel::selectedRows(int column = 0) const
Devuelve los índices en el column dado para las filas en las que todas las columnas están seleccionadas.
Nota: Esta función puede invocarse a través del sistema de metaobjetos y desde QML. Véase Q_INVOKABLE.
Véase también selectedIndexes() y selectedColumns().
const QItemSelection QItemSelectionModel::selection() const
Devuelve los rangos de selección almacenados en el modelo de selección.
[signal] void QItemSelectionModel::selectionChanged(const QItemSelection &selected, const QItemSelection &deselected)
Esta señal se emite cada vez que cambia la selección. El cambio en la selección se representa como una selección de elementos de deselected elementos y una selección de elementos de selected elementos.
Tenga en cuenta que el índice actual cambia independientemente de la selección. Ten en cuenta también que esta señal no se emitirá cuando se reinicie el modelo de ítems.
Los elementos que permanecen seleccionados pero cambian su índice no se incluyen en selected y deselected. Por lo tanto, esta señal puede emitirse con selected y deselected vacíos, si sólo cambian los índices de los elementos seleccionados.
Nota: No está permitido modificar el modelo (por ejemplo, llamando a setData()) desde una ranura conectada directamente a esta señal. Esta señal puede emitirse mientras el modelo está en proceso de modificación, por ejemplo durante la eliminación de filas o columnas, o un reinicio del modelo. Intentar realizar modificaciones adicionales en esos momentos puede provocar un comportamiento indefinido. En particular, las modificaciones anidadas pueden corromper el estado interno, como las estructuras de mapeo mantenidas por QSortFilterProxyModel.
Nota: Señal notificadora para la propiedad selectedIndexes.
Véase también select() y currentChanged().
[virtual slot] void QItemSelectionModel::setCurrentIndex(const QModelIndex &index, QItemSelectionModel::SelectionFlags command)
Establece el elemento del modelo index como elemento actual y emite currentChanged(). El elemento actual se utiliza para la navegación por teclado y la indicación de foco; es independiente de cualquier elemento seleccionado, aunque un elemento seleccionado también puede ser el elemento actual.
Dependiendo del command especificado, el index también puede formar parte de la selección actual.
Véase también currentIndex() y select().
void QItemSelectionModel::setModel(QAbstractItemModel *model)
Establece el modelo en model. Se emitirá la señal modelChanged().
Véase también model() y modelChanged().
© 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.