Auf dieser Seite

QItemSelectionModel Class

Die Klasse „QItemSelectionModel“ verwaltet die ausgewählten Elemente einer Ansicht. Mehr...

Header: #include <QItemSelectionModel>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Erbt von: 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)

Ausführliche Beschreibung

Ein QItemSelectionModel verwaltet die ausgewählten Elemente in einer Ansicht oder in mehreren Ansichten desselben Modells. Außerdem verwaltet es das aktuell ausgewählte Element in einer Ansicht.

Die Klasse `QItemSelectionModel` gehört zu den Modell-Ansicht-Klassen und ist Teil des Modell-Ansicht-Frameworks von Qt.

Die ausgewählten Elemente werden mithilfe von Bereichen gespeichert. Wenn Sie die ausgewählten Elemente ändern möchten, verwenden Sie ` select()` und übergeben Sie entweder einen ` QItemSelection` oder einen ` QModelIndex ` sowie einen ` QItemSelectionModel::SelectionFlag`.

Das `QItemSelectionModel` verfolgt bei der Auswahlverwaltung einen zweistufigen Ansatz und behandelt sowohl ausgewählte Elemente, die bereits bestätigt wurden, als auch Elemente, die Teil der aktuellen Auswahl sind. Die aktuell ausgewählten Elemente sind Teil der aktuellen interaktiven Auswahl (z. B. bei der Gummibandauswahl oder der Auswahl über die Umschalttaste).

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 Gesamtauswahl hinzugefügt. Alle Funktionen wirken auf beide Ebenen; beispielsweise gibt „ selecteditems()“ Elemente aus beiden Ebenen zurück.

Hinweis: Seit Version 5.5 sind „ model “, „ hasSelection “ und „ currentIndex “ Metaobjekt-Eigenschaften.

Siehe auch Modell-/Ansichtsprogrammierung und QAbstractItemModel.

Dokumentation zu Mitgliedstypen

enum QItemSelectionModel::SelectionFlag
flags QItemSelectionModel::SelectionFlags

Diese Enumeration beschreibt, wie das Auswahlmodell 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 Status ausgewählt oder die Auswahl aufgehoben.
QItemSelectionModel::Current0x0010Die aktuelle Auswahl wird aktualisiert.
QItemSelectionModel::Rows0x0020Alle Indizes werden so erweitert, dass sie sich über mehrere 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 bereitgestellt wird.
QItemSelectionModel::ToggleCurrentToggle | CurrentEine Kombination aus „Umschalten“ und „Aktuell“, die der Einfachheit halber bereitgestellt 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 Eigenschaft

[read-only] selectedIndexes : QModelIndexList

Zugriffsfunktionen:

QModelIndexList selectedIndexes() const

Benachrichtigungssignal:

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

Dokumentation der Member-Funktionen

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

Erstellt ein Auswahlmodell, das auf dem angegebenen Element model angewendet wird.

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

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

[virtual noexcept] QItemSelectionModel::~QItemSelectionModel()

Löscht das Auswahlmodell.

[virtual slot] void QItemSelectionModel::clear()

Löscht das Auswahlmodell. Sendet die Signale „ selectionChanged()“ und „ currentChanged()“.

[virtual slot] void QItemSelectionModel::clearCurrentIndex()

Löscht den aktuellen Index. Löst die Ereignis currentChanged() aus.

[slot] void QItemSelectionModel::clearSelection()

Löscht die Auswahl im Auswahlmodell. Löst „ selectionChanged()“ aus.

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

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

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

Hinweis: Diese Funktion kann über das Metaobjektsystem und aus QML aufgerufen werden. Siehe Q_INVOKABLE.

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

Dieses Signal wird immer dann ausgelöst, wenn sich das aktuelle Element ändert. Der Index des Elementmodells „ previous “ wird durch den Index „ current “ als aktuelles Element der Auswahl ersetzt.

Beachten Sie, dass dieses Signal nicht ausgelöst 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 ausgelöst, wenn sich das Element „ current “ ändert und dessen Spalte sich von der Spalte des aktuellen Elements „ previous “ unterscheidet.

Beachten Sie, dass dieses Signal nicht ausgelöst wird, wenn das Elementmodell zurückgesetzt wird.

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

QModelIndex QItemSelectionModel::currentIndex() const

Gibt den Modellelementindex für das aktuelle Element zurück oder einen ungültigen Index, wenn kein aktuelles Element vorhanden ist.

Siehe auch ` setCurrentIndex()`.

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

Dieses Signal wird ausgelöst, wenn sich das Element „ current “ ändert und seine Zeile sich von der Zeile des aktuellen Elements „ previous “ unterscheidet.

Beachten Sie, dass dieses Signal nicht ausgelöst 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 gibt selectionChanged() mit den abgewählten und ausgewählten Elementen zurück.

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 Metaobjektsystem und aus QML aufgerufen werden. Siehe „ Q_INVOKABLE “.

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

Gibt „ true “ zurück, wenn alle Elemente 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 Metaobjektsystem und aus QML 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 Metaobjektsystem und aus QML aufgerufen werden. Siehe Q_INVOKABLE.

QAbstractItemModel *QItemSelectionModel::model()

Gibt das Elementmodell zurück, auf das das Auswahlmodell angewendet wurde.

Siehe auch „ setModel()“.

const QAbstractItemModel *QItemSelectionModel::model() const

Gibt das Elementmodell zurück, auf das das Auswahlmodell angewendet wurde.

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

Dieses Signal wird ausgelöst, wenn die „ model “ erfolgreich mit „ setModel()“ gesetzt wurde.

Siehe auch „ model()“ und „ setModel()“.

[virtual slot] void QItemSelectionModel::reset()

Löscht das Auswahlmodell. Es werden keine Signale ausgegeben.

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

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

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

Hinweis: Diese Funktion kann über das Metaobjektsystem und aus QML aufgerufen werden. Siehe Q_INVOKABLE.

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

Wählt das Element „ selection “ unter Verwendung des angegebenen „ command “ aus und gibt „ selectionChanged()“ aus.

Hinweis: Dieser Slot ist überladen. So stellen Sie eine Verbindung zu diesem Slot her:

// 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); });
Weitere Beispiele und Vorgehensweisen finden Sie unter „Anschließen an überladene Slots“.

Siehe auch „ QItemSelectionModel::SelectionFlag “.

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

Wählt das Modellobjekt „ index “ unter Verwendung des angegebenen „ command “ aus und gibt „ selectionChanged()“ aus.

Hinweis: Dieser Slot ist überladen. So stellen Sie eine Verbindung zu diesem Slot her:

// 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); });
Weitere Beispiele und Vorgehensweisen finden Sie unter „Verbindung zu überladenen Slots herstellen“.

Siehe auch „ QItemSelectionModel::SelectionFlags “.

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

Gibt die Indizes im angegebenen „ row “ für Spalten zurück, bei denen alle Zeilen ausgewählt sind.

Hinweis: Diese Funktion kann über das Metaobjektsystem und aus QML 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

Gibt die Indizes im angegebenen „ column “ für die Zeilen zurück, bei denen alle Spalten ausgewählt sind.

Hinweis: Diese Funktion kann über das Metaobjektsystem und aus QML 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 immer dann ausgelöst, wenn sich die Auswahl ändert. Die Änderung der Auswahl wird als Elementauswahl der Elemente „ deselected “ und als Elementauswahl der Elemente „ selected “ dargestellt.

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

Elemente, die ausgewählt bleiben, aber ihren Index ändern, werden nicht in „ selected “ und „ deselected “ berücksichtigt. Daher kann dieses Signal auch dann ausgelöst werden, wenn sowohl „ selected “ als auch „ deselected “ leer sind, sofern sich lediglich die Indizes der ausgewählten Elemente ändern.

Hinweis: Es ist nicht zulässig, das Modell (z. B. durch Aufruf von `setData()`) aus einem Slot heraus zu ändern, der direkt mit diesem Signal verbunden ist. Dieses Signal kann ausgegeben werden, während das Modell gerade geändert wird, beispielsweise beim Entfernen von Zeilen oder Spalten oder bei einem Modell-Reset. Der Versuch, zu solchen Zeitpunkten zusätzliche Änderungen vorzunehmen, kann zu undefiniertem Verhalten führen. Insbesondere können verschachtelte Änderungen den internen Zustand beschädigen, wie z. B. die von ` QSortFilterProxyModel` verwalteten Zuordnungsstrukturen.

Hinweis: Notifier -Signal für die Eigenschaft ` selectedIndexes`.

Siehe auch „ select()“ und „ currentChanged()“.

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

Setzt das Modellelement „ index “ als aktuelles Element und löst „ currentChanged()“ aus. Das aktuelle Element wird für die Tastaturnavigation und die Fokusanzeige verwendet; es ist unabhängig von ausgewählten Elementen, obwohl ein ausgewähltes Element auch das aktuelle Element sein kann.

Je nach dem angegebenen „ command “ kann der „ index “ auch Teil der aktuellen Auswahl werden.

Siehe auch ` currentIndex()` und ` select()`.

void QItemSelectionModel::setModel(QAbstractItemModel *model)

Setzt das Modell auf „ model “. Das Signal „ modelChanged()“ wird ausgegeben.

Siehe auch „ model()“ und „ 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.