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
- selectedIndexes : QModelIndexList
Ö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 ¤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) |
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.
| Konstante | Wert | Beschreibung |
|---|---|---|
QItemSelectionModel::NoUpdate | 0x0000 | Es wird keine Auswahl getroffen. |
QItemSelectionModel::Clear | 0x0001 | Die gesamte Auswahl wird gelöscht. |
QItemSelectionModel::Select | 0x0002 | Alle angegebenen Indizes werden ausgewählt. |
QItemSelectionModel::Deselect | 0x0004 | Alle angegebenen Indizes werden abgewählt. |
QItemSelectionModel::Toggle | 0x0008 | Alle angegebenen Indizes werden je nach ihrem aktuellen Status ausgewählt oder die Auswahl aufgehoben. |
QItemSelectionModel::Current | 0x0010 | Die aktuelle Auswahl wird aktualisiert. |
QItemSelectionModel::Rows | 0x0020 | Alle Indizes werden so erweitert, dass sie sich über mehrere Zeilen erstrecken. |
QItemSelectionModel::Columns | 0x0040 | Alle Indizes werden so erweitert, dass sie sich über Spalten erstrecken. |
QItemSelectionModel::SelectCurrent | Select | Current | Eine Kombination aus „Auswählen“ und „Aktuell“, die der Einfachheit halber bereitgestellt wird. |
QItemSelectionModel::ToggleCurrent | Toggle | Current | Eine Kombination aus „Umschalten“ und „Aktuell“, die der Einfachheit halber bereitgestellt wird. |
QItemSelectionModel::ClearAndSelect | Clear | Select | Eine 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 ¤t, 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 ¤t, 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 ¤t, 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); }); 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); }); 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.