Sur cette page

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

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 &current, const QModelIndex &previous)
void currentColumnChanged(const QModelIndex &current, const QModelIndex &previous)
void currentRowChanged(const QModelIndex &current, 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.

ConstanteValeurDescription
QItemSelectionModel::NoUpdate0x0000Aucune sélection ne sera effectuée.
QItemSelectionModel::Clear0x0001La sélection complète est effacée.
QItemSelectionModel::Select0x0002Tous les index spécifiés sont sélectionnés.
QItemSelectionModel::Deselect0x0004Tous les index spécifiés seront désélectionnés.
QItemSelectionModel::Toggle0x0008Tous les index spécifiés seront sélectionnés ou désélectionnés en fonction de leur état actuel.
QItemSelectionModel::Current0x0010La sélection actuelle est mise à jour.
QItemSelectionModel::Rows0x0020Tous les index seront développés pour couvrir les lignes.
QItemSelectionModel::Columns0x0040Tous les index seront développés pour couvrir les colonnes.
QItemSelectionModel::SelectCurrentSelect | CurrentUne combinaison de Select et Current, fournie pour des raisons de commodité.
QItemSelectionModel::ToggleCurrentToggle | CurrentUne combinaison de Toggle et Current, fournie pour des raisons de commodité.
QItemSelectionModel::ClearAndSelectClear | SelectUne 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 &current, 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 &current, 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 &current, 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); });
Pour plus d'exemples et d'approches, voir se connecter à des slots surchargés.

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); });
Pour plus d'exemples et d'approches, voir connecting to overloaded slots.

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.