QItemSelectionModel Class
La classe QItemSelectionModel garde la trace des éléments sélectionnés d'une vue. Plus d'informations...
| En-tête : | #include <QItemSelectionModel> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
| Héritages : | QObject |
Types publics
| enum | SelectionFlag { NoUpdate, Clear, Select, Deselect, Toggle, …, ClearAndSelect } |
| flags | SelectionFlags |
Propriétés
- selectedIndexes : QModelIndexList
Fonctions publiques
| 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) |
Emplacements publics
| 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) |
Signaux
| 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) |
Fonctions protégées
| void | emitSelectionChanged(const QItemSelection &newSelection, const QItemSelection &oldSelection) |
Description détaillée
Un QItemSelectionModel garde la trace des éléments sélectionnés dans une vue ou dans plusieurs vues du même modèle. Il garde également la trace de l'élément actuellement sélectionné dans une vue.
La classe QItemSelectionModel est l'une des classes Modèle/Vue et fait partie du cadre Modèle/Vue de Qt.
Les éléments sélectionnés sont stockés dans des plages. Lorsque vous souhaitez modifier les éléments sélectionnés, utilisez select() et fournissez soit un QItemSelection, soit un QModelIndex et un QItemSelectionModel::SelectionFlag.
Le modèle QItemSelectionModel adopte une approche à deux niveaux pour la gestion de la sélection, en traitant à la fois les éléments sélectionnés qui ont été validés et les éléments qui font partie de la sélection actuelle. Les éléments sélectionnés en cours font partie de la sélection interactive en cours (par exemple, avec la sélection par élastique ou la sélection par déplacement du clavier).
Pour mettre à jour les éléments actuellement sélectionnés, utilisez le OU binaire de QItemSelectionModel::Current et de n'importe quelle autre commande SelectionFlags. Si vous omettez la commande QItemSelectionModel::Current, une nouvelle sélection courante sera créée et la précédente sera ajoutée à l'ensemble de la sélection. Toutes les fonctions opèrent sur les deux couches ; par exemple, selecteditems() renvoie des éléments des deux couches.
Remarque : depuis la version 5.5, model, hasSelection et currentIndex sont des propriétés de méta-objets.
Voir également Programmation Modèle/Vue et QAbstractItemModel.
Documentation des types de membres
enum QItemSelectionModel::SelectionFlag
flags QItemSelectionModel::SelectionFlags
Cette énumération décrit la manière dont le modèle de sélection sera mis à jour.
| Constante | Valeur | Description |
|---|---|---|
QItemSelectionModel::NoUpdate | 0x0000 | Aucune sélection ne sera effectuée. |
QItemSelectionModel::Clear | 0x0001 | La sélection complète est effacée. |
QItemSelectionModel::Select | 0x0002 | Tous les index spécifiés sont sélectionnés. |
QItemSelectionModel::Deselect | 0x0004 | Tous les index spécifiés seront désélectionnés. |
QItemSelectionModel::Toggle | 0x0008 | Tous les index spécifiés seront sélectionnés ou désélectionnés en fonction de leur état actuel. |
QItemSelectionModel::Current | 0x0010 | La sélection actuelle est mise à jour. |
QItemSelectionModel::Rows | 0x0020 | Tous les index seront développés pour couvrir les lignes. |
QItemSelectionModel::Columns | 0x0040 | Tous les index seront développés pour couvrir les colonnes. |
QItemSelectionModel::SelectCurrent | Select | Current | Une combinaison de Select et Current, fournie pour des raisons de commodité. |
QItemSelectionModel::ToggleCurrent | Toggle | Current | Une combinaison de Toggle et Current, fournie pour des raisons de commodité. |
QItemSelectionModel::ClearAndSelect | Clear | Select | Une combinaison de Clear et Select, fournie pour des raisons de commodité. |
Le type SelectionFlags est un typedef pour QFlags<SelectionFlag>. Il stocke une combinaison OU de valeurs SelectionFlag.
Documentation sur les propriétés
[read-only] selectedIndexes : QModelIndexList
Fonctions d'accès :
| QModelIndexList | selectedIndexes() const |
Signal du notificateur :
| void | selectionChanged(const QItemSelection &selected, const QItemSelection &deselected) |
Fonction membre Documentation
[explicit] QItemSelectionModel::QItemSelectionModel(QAbstractItemModel *model = nullptr)
Construit un modèle de sélection qui opère sur l'élément spécifié model.
[explicit] QItemSelectionModel::QItemSelectionModel(QAbstractItemModel *model, QObject *parent)
Construit un modèle de sélection qui opère sur l'élément spécifié model avec parent.
[virtual noexcept] QItemSelectionModel::~QItemSelectionModel()
Détruit le modèle de sélection.
[virtual slot] void QItemSelectionModel::clear()
Efface le modèle de sélection. Emet selectionChanged() et currentChanged().
[virtual slot] void QItemSelectionModel::clearCurrentIndex()
Efface l'index actuel. Emet currentChanged().
[slot] void QItemSelectionModel::clearSelection()
Efface la sélection dans le modèle de sélection. Emet selectionChanged().
[invokable] bool QItemSelectionModel::columnIntersectsSelection(int column, const QModelIndex &parent = QModelIndex()) const
Renvoie true s'il y a des éléments sélectionnés dans column avec parent.
Note : Depuis Qt 5.15, l'argument par défaut pour parent est un index de modèle vide.
Note : Cette fonction peut être invoquée via le système de méta-objets et à partir de QML. Voir Q_INVOKABLE.
[signal] void QItemSelectionModel::currentChanged(const QModelIndex ¤t, const QModelIndex &previous)
Ce signal est émis lorsque l'élément courant change. L'index de l'élément du modèle previous est remplacé par l'index current en tant qu'élément courant de la sélection.
Notez que ce signal n'est pas émis lorsque le modèle d'élément est réinitialisé.
Voir également currentIndex(), setCurrentIndex() et selectionChanged().
[signal] void QItemSelectionModel::currentColumnChanged(const QModelIndex ¤t, const QModelIndex &previous)
Ce signal est émis si l'élément current change et que sa colonne est différente de celle de l'élément courant previous.
Notez que ce signal n'est pas émis lorsque le modèle d'élément est réinitialisé.
Voir aussi currentChanged(), currentRowChanged(), currentIndex() et setCurrentIndex().
QModelIndex QItemSelectionModel::currentIndex() const
Renvoie l'index de l'élément de modèle pour l'élément courant, ou un index invalide s'il n'y a pas d'élément courant.
Voir aussi setCurrentIndex().
[signal] void QItemSelectionModel::currentRowChanged(const QModelIndex ¤t, const QModelIndex &previous)
Ce signal est émis si l'élément current change et que sa ligne est différente de celle de l'élément courant previous.
Notez que ce signal n'est pas émis lorsque le modèle d'élément est réinitialisé.
Voir aussi currentChanged(), currentColumnChanged(), currentIndex() et setCurrentIndex().
[protected] void QItemSelectionModel::emitSelectionChanged(const QItemSelection &newSelection, const QItemSelection &oldSelection)
Compare les deux sélections newSelection et oldSelection et émet selectionChanged() avec les éléments désélectionnés et sélectionnés.
bool QItemSelectionModel::hasSelection() const
Renvoie true si le modèle de sélection contient un élément sélectionné, sinon renvoie false.
[invokable] bool QItemSelectionModel::isColumnSelected(int column, const QModelIndex &parent = QModelIndex()) const
Renvoie true si tous les éléments sont sélectionnés dans la colonne column avec la valeur parent.
Notez que cette fonction est généralement plus rapide que d'appeler isSelected() sur tous les éléments de la même colonne et que les éléments non sélectionnables sont ignorés.
Note : Depuis Qt 5.15, l'argument par défaut de parent est un index de modèle vide.
Note : Cette fonction peut être invoquée via le système de méta-objets et à partir de QML. Voir Q_INVOKABLE.
[invokable] bool QItemSelectionModel::isRowSelected(int row, const QModelIndex &parent = QModelIndex()) const
Renvoie true si tous les éléments sont sélectionnés dans row avec parent.
Notez que cette fonction est généralement plus rapide que d'appeler isSelected() sur tous les éléments de la même ligne et que les éléments non sélectionnables sont ignorés.
Note : Depuis Qt 5.15, l'argument par défaut de parent est un index de modèle vide.
Note : Cette fonction peut être invoquée via le système de méta-objets et à partir de QML. Voir Q_INVOKABLE.
[invokable] bool QItemSelectionModel::isSelected(const QModelIndex &index) const
Renvoie true si l'élément de modèle index est sélectionné.
Note : Cette fonction peut être invoquée via le système de méta-objets et à partir de QML. Voir Q_INVOKABLE.
QAbstractItemModel *QItemSelectionModel::model()
Renvoie le modèle d'élément exploité par le modèle de sélection.
Voir aussi setModel().
const QAbstractItemModel *QItemSelectionModel::model() const
Renvoie le modèle d'élément exploité par le modèle de sélection.
[signal] void QItemSelectionModel::modelChanged(QAbstractItemModel *model)
Ce signal est émis lorsque l'adresse model est définie avec succès à l'aide de setModel().
Voir aussi model() et setModel().
[virtual slot] void QItemSelectionModel::reset()
Efface le modèle de sélection. N'émet aucun signal.
[invokable] bool QItemSelectionModel::rowIntersectsSelection(int row, const QModelIndex &parent = QModelIndex()) const
Renvoie true s'il y a des éléments sélectionnés dans row avec parent.
Note : Depuis Qt 5.15, l'argument par défaut pour parent est un index de modèle vide.
Note : Cette fonction peut être invoquée via le système de méta-objets et à partir de QML. Voir Q_INVOKABLE.
[virtual slot] void QItemSelectionModel::select(const QItemSelection &selection, QItemSelectionModel::SelectionFlags command)
Sélectionne l'élément selection à l'aide de l'élément spécifié command, et émet selectionChanged().
Note : Ce slot est surchargé. Pour se connecter à ce slot :
// 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); }); Voir aussi QItemSelectionModel::SelectionFlag.
[virtual slot] void QItemSelectionModel::select(const QModelIndex &index, QItemSelectionModel::SelectionFlags command)
Sélectionne l'élément du modèle index à l'aide de l'élément spécifié command, et émet selectionChanged().
Note : Cet emplacement est surchargé. Pour se connecter à ce slot :
// 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); }); Voir aussi QItemSelectionModel::SelectionFlags.
[invokable] QModelIndexList QItemSelectionModel::selectedColumns(int row = 0) const
Renvoie les index dans le site row pour les colonnes où toutes les lignes sont sélectionnées.
Remarque : cette fonction peut être invoquée via le système de méta-objets et à partir de QML. Voir Q_INVOKABLE.
Voir également selectedIndexes() et selectedRows().
QModelIndexList QItemSelectionModel::selectedIndexes() const
Renvoie une liste de tous les index d'éléments de modèle sélectionnés. La liste ne contient pas de doublons et n'est pas triée.
Remarque : fonction Getter pour la propriété selectedIndexes.
[invokable] QModelIndexList QItemSelectionModel::selectedRows(int column = 0) const
Renvoie les index dans le site column pour les lignes dont toutes les colonnes sont sélectionnées.
Remarque : cette fonction peut être invoquée via le système de méta-objets et à partir de QML. Voir Q_INVOKABLE.
Voir également selectedIndexes() et selectedColumns().
const QItemSelection QItemSelectionModel::selection() const
Renvoie les plages de sélection stockées dans le modèle de sélection.
[signal] void QItemSelectionModel::selectionChanged(const QItemSelection &selected, const QItemSelection &deselected)
Ce signal est émis lorsque la sélection change. La modification de la sélection est représentée par une sélection d'éléments de deselected et une sélection d'éléments de selected.
Notez que l'indice actuel change indépendamment de la sélection. Notez également que ce signal ne sera pas émis lorsque le modèle d'élément est réinitialisé.
Les éléments qui restent sélectionnés mais dont l'indice change ne sont pas inclus dans selected et deselected. Ainsi, ce signal peut être émis lorsque selected et deselected sont vides, si seuls les indices des éléments sélectionnés changent.
Remarque : il n'est pas permis de modifier le modèle (par exemple, en appelant setData()) à l'intérieur d'un slot connecté directement à ce signal. Ce signal peut être émis lorsque le modèle est en cours de modification, par exemple lors de la suppression d'une ligne ou d'une colonne, ou lors d'une réinitialisation du modèle. Tenter d'effectuer des modifications supplémentaires à de tels moments peut conduire à un comportement indéfini. En particulier, les modifications imbriquées peuvent corrompre l'état interne, comme les structures de mappage gérées par QSortFilterProxyModel.
Note : Signal de notification pour la propriété selectedIndexes.
Voir également select() et currentChanged().
[virtual slot] void QItemSelectionModel::setCurrentIndex(const QModelIndex &index, QItemSelectionModel::SelectionFlags command)
Définit l'élément de modèle index comme étant l'élément courant et émet currentChanged(). L'élément courant est utilisé pour la navigation au clavier et l'indication du focus ; il est indépendant de tout élément sélectionné, bien qu'un élément sélectionné puisse également être l'élément courant.
En fonction de l'adresse command spécifiée, l'adresse index peut également faire partie de la sélection en cours.
Voir également currentIndex() et select().
void QItemSelectionModel::setModel(QAbstractItemModel *model)
Définit le modèle à model. Le signal modelChanged() sera émis.
Voir aussi model() et 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.