QItemSelectionModel Class

Die Klasse QItemSelectionModel behält den Überblick über die ausgewählten Elemente einer Ansicht. Mehr...

Kopfzeile: #include <QItemSelectionModel>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Vererbt: QObject

Öffentliche Typen

enum SelectionFlag { NoUpdate, Clear, Select, Deselect, Toggle, …, ClearAndSelect }
flags SelectionFlags

Eigenschaften

Öffentliche Funktionen

QItemSelectionModel(QAbstractItemModel *model = nullptr)
QItemSelectionModel(QAbstractItemModel *model, QObject *parent)
virtual ~QItemSelectionModel()
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)

Öffentliche Slots

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)

Signale

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)

Geschützte Funktionen

void emitSelectionChanged(const QItemSelection &newSelection, const QItemSelection &oldSelection)

Detaillierte Beschreibung

Ein QItemSelectionModel behält den Überblick über die ausgewählten Elemente in einer Ansicht oder in mehreren Ansichten desselben Modells. Es behält auch den Überblick über das aktuell ausgewählte Element in einer Ansicht.

Die Klasse QItemSelectionModel gehört zu den Model/View-Klassen und ist Teil des Model/View-Frameworks von Qt.

Die ausgewählten Elemente werden mit Hilfe von Bereichen gespeichert. Wenn Sie die ausgewählten Elemente ändern möchten, verwenden Sie select() und geben Sie entweder ein QItemSelection oder ein QModelIndex und ein QItemSelectionModel::SelectionFlag an.

Das QItemSelectionModel verfolgt einen zweischichtigen Ansatz für die Verwaltung der Auswahl, wobei sowohl ausgewählte Elemente, die bestätigt wurden, als auch Elemente, die Teil der aktuellen Auswahl sind, behandelt werden. Die aktuell ausgewählten Elemente sind Teil der aktuellen interaktiven Auswahl (z. B. bei Gummibandauswahl oder Tastaturumschaltungen).

Um die aktuell ausgewählten Elemente zu aktualisieren, verwenden Sie die bitweise ODER-Verknüpfung von QItemSelectionModel::Current und einem der anderen SelectionFlags. Wenn Sie den Befehl QItemSelectionModel::Current weglassen, wird eine neue aktuelle Auswahl erstellt und die vorherige zur gesamten Auswahl hinzugefügt. Alle Funktionen arbeiten auf beiden Ebenen; selecteditems() gibt beispielsweise Elemente aus beiden Ebenen zurück.

Hinweis: Seit 5.5 sind model, hasSelection und currentIndex Meta-Objekteigenschaften.

Siehe auch Model/View-Programmierung und QAbstractItemModel.

Dokumentation der Mitgliedstypen

enum QItemSelectionModel::SelectionFlag
flags QItemSelectionModel::SelectionFlags

Diese Aufzählung beschreibt die Art und Weise, wie das Selektionsmodell aktualisiert wird.

KonstanteWertBeschreibung
QItemSelectionModel::NoUpdate0x0000Es wird keine Auswahl getroffen.
QItemSelectionModel::Clear0x0001Die gesamte Auswahl wird gelöscht.
QItemSelectionModel::Select0x0002Alle angegebenen Indizes werden ausgewählt.
QItemSelectionModel::Deselect0x0004Alle angegebenen Indizes werden abgewählt.
QItemSelectionModel::Toggle0x0008Alle angegebenen Indizes werden je nach ihrem aktuellen Zustand aus- oder abgewählt.
QItemSelectionModel::Current0x0010Die aktuelle Auswahl wird aktualisiert.
QItemSelectionModel::Rows0x0020Alle Indizes werden so erweitert, dass sie sich über Zeilen erstrecken.
QItemSelectionModel::Columns0x0040Alle Indizes werden so erweitert, dass sie sich über Spalten erstrecken.
QItemSelectionModel::SelectCurrentSelect | CurrentEine Kombination aus Auswählen und Aktuell, die der Einfachheit halber angeboten wird.
QItemSelectionModel::ToggleCurrentToggle | CurrentEine Kombination aus Umschalten und Aktuell, die der Einfachheit halber angeboten wird.
QItemSelectionModel::ClearAndSelectClear | SelectEine Kombination aus Clear und Select, die der Einfachheit halber bereitgestellt wird.

Der Typ SelectionFlags ist ein Typedef für QFlags<SelectionFlag>. Er speichert eine ODER-Kombination von SelectionFlag-Werten.

Dokumentation der Eigenschaften

[read-only] selectedIndexes : const QModelIndexList

Zugriffsfunktionen:

QModelIndexList selectedIndexes() const

Melder-Signal:

void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected)

Member Function Dokumentation

[explicit] QItemSelectionModel::QItemSelectionModel(QAbstractItemModel *model = nullptr)

Konstruiert ein Auswahlmodell, das mit dem angegebenen Element model arbeitet.

[explicit] QItemSelectionModel::QItemSelectionModel(QAbstractItemModel *model, QObject *parent)

Konstruiert ein Auswahlmodell, das auf dem angegebenen Element model mit parent arbeitet.

[virtual noexcept] QItemSelectionModel::~QItemSelectionModel()

Zerstört das Auswahlmodell.

[virtual slot] void QItemSelectionModel::clear()

Löscht das Auswahlmodell. Gibt selectionChanged() und currentChanged() aus.

[virtual slot] void QItemSelectionModel::clearCurrentIndex()

Löscht den aktuellen Index. Gibt currentChanged() aus.

[slot] void QItemSelectionModel::clearSelection()

Löscht die Auswahl im Auswahlmodell. Gibt selectionChanged() aus.

[invokable] bool QItemSelectionModel::columnIntersectsSelection(int column, const QModelIndex &parent = QModelIndex()) const

Gibt true zurück, wenn im column mit dem angegebenen parent irgendwelche Elemente ausgewählt sind.

Hinweis: Seit Qt 5.15 ist das Standardargument für parent ein leerer Modellindex.

Hinweis: Diese Funktion kann über das Meta-Objektsystem und von QML aus aufgerufen werden. Siehe Q_INVOKABLE.

[signal] void QItemSelectionModel::currentChanged(const QModelIndex &current, const QModelIndex &previous)

Dieses Signal wird ausgegeben, wenn sich das aktuelle Element ändert. Der Artikelindex des Modells previous wird durch den Index current als aktueller Artikel der Auswahl ersetzt.

Beachten Sie, dass dieses Signal nicht ausgegeben wird, wenn das Elementmodell zurückgesetzt wird.

Siehe auch currentIndex(), setCurrentIndex(), und selectionChanged().

[signal] void QItemSelectionModel::currentColumnChanged(const QModelIndex &current, const QModelIndex &previous)

Dieses Signal wird ausgegeben, wenn sich das Element current ändert und seine Spalte sich von der Spalte des aktuellen Elements previous unterscheidet.

Beachten Sie, dass dieses Signal nicht ausgegeben wird, wenn das Elementmodell zurückgesetzt wird.

Siehe auch currentChanged(), currentRowChanged(), currentIndex(), und setCurrentIndex().

QModelIndex QItemSelectionModel::currentIndex() const

Gibt den Index des Modellartikels für den aktuellen Artikel zurück, oder einen ungültigen Index, wenn es keinen aktuellen Artikel gibt.

Siehe auch setCurrentIndex().

[signal] void QItemSelectionModel::currentRowChanged(const QModelIndex &current, const QModelIndex &previous)

Dieses Signal wird ausgegeben, wenn sich das Element current ändert und seine Zeile sich von der Zeile des aktuellen Elements previous unterscheidet.

Beachten Sie, dass dieses Signal nicht ausgegeben wird, wenn das Elementmodell zurückgesetzt wird.

Siehe auch currentChanged(), currentColumnChanged(), currentIndex(), und setCurrentIndex().

[protected] void QItemSelectionModel::emitSelectionChanged(const QItemSelection &newSelection, const QItemSelection &oldSelection)

Vergleicht die beiden Auswahlen newSelection und oldSelection und sendet selectionChanged() mit den abgewählten und ausgewählten Elementen.

bool QItemSelectionModel::hasSelection() const

Gibt true zurück, wenn das Auswahlmodell ein ausgewähltes Element enthält, andernfalls wird false zurückgegeben.

[invokable] bool QItemSelectionModel::isColumnSelected(int column, const QModelIndex &parent = QModelIndex()) const

Gibt true zurück, wenn alle Elemente in der column mit dem angegebenen parent ausgewählt sind.

Beachten Sie, dass diese Funktion in der Regel schneller ist als der Aufruf von isSelected() für alle Elemente in derselben Spalte und dass nicht auswählbare Elemente ignoriert werden.

Hinweis: Seit Qt 5.15 ist das Standardargument für parent ein leerer Modellindex.

Hinweis: Diese Funktion kann über das Meta-Objektsystem und von QML aus aufgerufen werden. Siehe Q_INVOKABLE.

[invokable] bool QItemSelectionModel::isRowSelected(int row, const QModelIndex &parent = QModelIndex()) const

Gibt true zurück, wenn alle Einträge in der row mit dem angegebenen parent ausgewählt sind.

Beachten Sie, dass diese Funktion in der Regel schneller ist als der Aufruf von isSelected() für alle Elemente in derselben Zeile und dass nicht auswählbare Elemente ignoriert werden.

Hinweis: Seit Qt 5.15 ist das Standardargument für parent ein leerer Modellindex.

Hinweis: Diese Funktion kann über das Meta-Objektsystem und von QML aus aufgerufen werden. Siehe Q_INVOKABLE.

[invokable] bool QItemSelectionModel::isSelected(const QModelIndex &index) const

Gibt true zurück, wenn das angegebene Modellelement index ausgewählt ist.

Hinweis: Diese Funktion kann über das Meta-Objektsystem und von QML aus aufgerufen werden. Siehe Q_INVOKABLE.

QAbstractItemModel *QItemSelectionModel::model()

Gibt das Objektmodell zurück, auf das das Auswahlmodell wirkt.

Siehe auch setModel().

const QAbstractItemModel *QItemSelectionModel::model() const

Gibt das Objektmodell zurück, mit dem das Auswahlmodell arbeitet.

[signal] void QItemSelectionModel::modelChanged(QAbstractItemModel *model)

Dieses Signal wird ausgegeben, wenn die model erfolgreich mit setModel() gesetzt wurde.

Siehe auch model() und setModel().

[virtual slot] void QItemSelectionModel::reset()

Löscht das Auswahlmodell. Gibt keine Signale aus.

[invokable] bool QItemSelectionModel::rowIntersectsSelection(int row, const QModelIndex &parent = QModelIndex()) const

Gibt true zurück, wenn im row mit dem angegebenen parent irgendwelche Elemente ausgewählt sind.

Hinweis: Seit Qt 5.15 ist das Standardargument für parent ein leerer Modellindex.

Hinweis: Diese Funktion kann über das Meta-Objektsystem und von QML aus aufgerufen werden. Siehe Q_INVOKABLE.

[virtual slot] void QItemSelectionModel::select(const QItemSelection &selection, QItemSelectionModel::SelectionFlags command)

Wählt den Eintrag selection unter Verwendung des angegebenen command aus und sendet selectionChanged().

Siehe auch QItemSelectionModel::SelectionFlag.

[virtual slot] void QItemSelectionModel::select(const QModelIndex &index, QItemSelectionModel::SelectionFlags command)

Wählt das Modellelement index unter Verwendung des angegebenen command aus und sendet selectionChanged().

Siehe auch QItemSelectionModel::SelectionFlags.

[invokable] QModelIndexList QItemSelectionModel::selectedColumns(int row = 0) const

Liefert die Indizes in der angegebenen row für Spalten, in denen alle Zeilen ausgewählt sind.

Hinweis: Diese Funktion kann über das Meta-Objektsystem und von QML aus aufgerufen werden. Siehe Q_INVOKABLE.

Siehe auch selectedIndexes() und selectedRows().

QModelIndexList QItemSelectionModel::selectedIndexes() const

Gibt eine Liste aller ausgewählten Modellelement-Indizes zurück. Die Liste enthält keine Duplikate und ist nicht sortiert.

Hinweis: Getter-Funktion für die Eigenschaft selectedIndexes.

[invokable] QModelIndexList QItemSelectionModel::selectedRows(int column = 0) const

Liefert die Indizes in der angegebenen column für die Zeilen, in denen alle Spalten ausgewählt sind.

Hinweis: Diese Funktion kann über das Meta-Objektsystem und von QML aus aufgerufen werden. Siehe Q_INVOKABLE.

Siehe auch selectedIndexes() und selectedColumns().

const QItemSelection QItemSelectionModel::selection() const

Gibt die im Auswahlmodell gespeicherten Auswahlbereiche zurück.

[signal] void QItemSelectionModel::selectionChanged(const QItemSelection &selected, const QItemSelection &deselected)

Dieses Signal wird ausgegeben, wenn sich die Auswahl ändert. Die Änderung der Auswahl wird als eine Auswahl von deselected Elementen und eine Auswahl von selected Elementen dargestellt.

Beachten Sie, dass sich der aktuelle Index unabhängig von der Auswahl ändert. Beachten Sie auch, dass dieses Signal nicht ausgegeben wird, wenn das Elementmodell zurückgesetzt wird.

Elemente, die ausgewählt bleiben, aber ihren Index ändern, sind nicht in selected und deselected enthalten. Daher kann dieses Signal ausgegeben werden, wenn sowohl selected als auch deselected leer sind, wenn sich nur die Indizes der ausgewählten Elemente ändern.

Hinweis: Benachrichtigungssignal für die Eigenschaft selectedIndexes.

Siehe auch select() und currentChanged().

[virtual slot] void QItemSelectionModel::setCurrentIndex(const QModelIndex &index, QItemSelectionModel::SelectionFlags command)

Legt das Modellelement index als das aktuelle Element fest und gibt currentChanged() aus. Das aktuelle Element wird für die Tastaturnavigation und die Anzeige des Fokus verwendet; es ist unabhängig von ausgewählten Elementen, obwohl ein ausgewähltes Element auch das aktuelle Element sein kann.

Abhängig von der Angabe command kann index auch Teil der aktuellen Auswahl werden.

Siehe auch currentIndex() und select().

void QItemSelectionModel::setModel(QAbstractItemModel *model)

Setzt das Modell auf model. Es wird das Signal modelChanged() ausgegeben.

Siehe auch model() und modelChanged().

© 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.