Auf dieser Seite

QAbstractItemModel Class

Die Klasse „QAbstractItemModel“ stellt die abstrakte Schnittstelle für Item-Modellklassen bereit. Mehr...

Header: #include <QAbstractItemModel>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Erbt von: QObject
Vererbt an:
10 Typen

QAbstractItemModelReplica, QAbstractListModel, QAbstractProxyModel, QAbstractTableModel, QConcatenateTablesProxyModel, QFileSystemModel, QHelpContentModel, QPdfBookmarkModel, QRangeModel sowie QStandardItemModel

Öffentliche Typen

enum class CheckIndexOption { NoOption, IndexIsValid, DoNotUseParent, ParentIsInvalid }
flags CheckIndexOptions
enum LayoutChangeHint { NoLayoutChangeHint, VerticalSortHint, HorizontalSortHint }

Öffentliche Funktionen

QAbstractItemModel(QObject *parent = nullptr)
virtual ~QAbstractItemModel()
virtual QModelIndex buddy(const QModelIndex &index) const
virtual bool canDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const
virtual bool canFetchMore(const QModelIndex &parent) const
bool checkIndex(const QModelIndex &index, QAbstractItemModel::CheckIndexOptions options = CheckIndexOption::NoOption) const
(since 6.0) virtual bool clearItemData(const QModelIndex &index)
virtual int columnCount(const QModelIndex &parent = QModelIndex()) const = 0
virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const = 0
virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)
virtual void fetchMore(const QModelIndex &parent)
virtual Qt::ItemFlags flags(const QModelIndex &index) const
virtual bool hasChildren(const QModelIndex &parent = QModelIndex()) const
bool hasIndex(int row, int column, const QModelIndex &parent = QModelIndex()) const
virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const
virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const = 0
bool insertColumn(int column, const QModelIndex &parent = QModelIndex())
virtual bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex())
bool insertRow(int row, const QModelIndex &parent = QModelIndex())
virtual bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex())
virtual QMap<int, QVariant> itemData(const QModelIndex &index) const
virtual QModelIndexList match(const QModelIndex &start, int role, const QVariant &value, int hits = 1, Qt::MatchFlags flags = Qt::MatchFlags(Qt::MatchStartsWith|Qt::MatchWrap)) const
virtual QMimeData *mimeData(const QModelIndexList &indexes) const
virtual QStringList mimeTypes() const
bool moveColumn(const QModelIndex &sourceParent, int sourceColumn, const QModelIndex &destinationParent, int destinationChild)
virtual bool moveColumns(const QModelIndex &sourceParent, int sourceColumn, int count, const QModelIndex &destinationParent, int destinationChild)
bool moveRow(const QModelIndex &sourceParent, int sourceRow, const QModelIndex &destinationParent, int destinationChild)
virtual bool moveRows(const QModelIndex &sourceParent, int sourceRow, int count, const QModelIndex &destinationParent, int destinationChild)
(since 6.0) virtual void multiData(const QModelIndex &index, QModelRoleDataSpan roleDataSpan) const
virtual QModelIndex parent(const QModelIndex &index) const = 0
bool removeColumn(int column, const QModelIndex &parent = QModelIndex())
virtual bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex())
bool removeRow(int row, const QModelIndex &parent = QModelIndex())
virtual bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex())
virtual QHash<int, QByteArray> roleNames() const
virtual int rowCount(const QModelIndex &parent = QModelIndex()) const = 0
virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole)
virtual bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole)
virtual bool setItemData(const QModelIndex &index, const QMap<int, QVariant> &roles)
virtual QModelIndex sibling(int row, int column, const QModelIndex &index) const
virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder)
virtual QSize span(const QModelIndex &index) const
virtual Qt::DropActions supportedDragActions() const
virtual Qt::DropActions supportedDropActions() const

Öffentliche Slots

virtual void revert()
virtual bool submit()

Signale

void columnsAboutToBeInserted(const QModelIndex &parent, int first, int last)
void columnsAboutToBeMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationColumn)
void columnsAboutToBeRemoved(const QModelIndex &parent, int first, int last)
void columnsInserted(const QModelIndex &parent, int first, int last)
void columnsMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationColumn)
void columnsRemoved(const QModelIndex &parent, int first, int last)
void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QList<int> &roles = QList<int>())
void headerDataChanged(Qt::Orientation orientation, int first, int last)
void layoutAboutToBeChanged(const QList<QPersistentModelIndex> &parents = QList<QPersistentModelIndex>(), QAbstractItemModel::LayoutChangeHint hint = QAbstractItemModel::NoLayoutChangeHint)
void layoutChanged(const QList<QPersistentModelIndex> &parents = QList<QPersistentModelIndex>(), QAbstractItemModel::LayoutChangeHint hint = QAbstractItemModel::NoLayoutChangeHint)
void modelAboutToBeReset()
void modelReset()
void rowsAboutToBeInserted(const QModelIndex &parent, int start, int end)
void rowsAboutToBeMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationRow)
void rowsAboutToBeRemoved(const QModelIndex &parent, int first, int last)
void rowsInserted(const QModelIndex &parent, int first, int last)
void rowsMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationRow)
void rowsRemoved(const QModelIndex &parent, int first, int last)

Geschützte Funktionen

void beginInsertColumns(const QModelIndex &parent, int first, int last)
void beginInsertRows(const QModelIndex &parent, int first, int last)
bool beginMoveColumns(const QModelIndex &sourceParent, int sourceFirst, int sourceLast, const QModelIndex &destinationParent, int destinationChild)
bool beginMoveRows(const QModelIndex &sourceParent, int sourceFirst, int sourceLast, const QModelIndex &destinationParent, int destinationChild)
void beginRemoveColumns(const QModelIndex &parent, int first, int last)
void beginRemoveRows(const QModelIndex &parent, int first, int last)
void beginResetModel()
void changePersistentIndex(const QModelIndex &from, const QModelIndex &to)
void changePersistentIndexList(const QModelIndexList &from, const QModelIndexList &to)
QModelIndex createIndex(int row, int column, const void *ptr = nullptr) const
QModelIndex createIndex(int row, int column, quintptr id) const
void endInsertColumns()
void endInsertRows()
void endMoveColumns()
void endMoveRows()
void endRemoveColumns()
void endRemoveRows()
void endResetModel()
QModelIndexList persistentIndexList() const

Geschützte Slots

virtual void resetInternalData()

Statisch geschützte Mitglieder

(since 6.12) Qt::weak_ordering compareData(const QVariant &left, const QVariant &right)
(since 6.12) Qt::weak_ordering compareData(const QVariant &left, const QVariant &right, const QCollator &collator)

Ausführliche Beschreibung

Die Klasse `QAbstractItemModel` definiert die Standardschnittstelle, die Elementmodelle verwenden müssen, um mit anderen Komponenten in der Model-View-Architektur zusammenarbeiten zu können. Sie ist nicht dafür vorgesehen, direkt instanziiert zu werden. Stattdessen sollten Sie eine Unterklasse davon erstellen, um neue Modelle zu definieren.

Die Klasse `QAbstractItemModel` gehört zu den Modell/Ansicht-Klassen und ist Teil des Modell/Ansicht-Frameworks von Qt. Sie kann als zugrunde liegendes Datenmodell für die Elementansichtselemente in QML oder die Elementansichtsklassen im Modul „ Qt Widgets “ verwendet werden.

Wenn Sie ein Modell benötigen, das mit einer Item-View wie dem List-View-Element von QML oder den C++-Widgets „ QListView “ oder „ QTableView “ verwendet werden soll, sollten Sie in Erwägung ziehen, stattdessen eine Unterklasse von „ QAbstractListModel “ oder „ QAbstractTableModel “ zu erstellen.

Das zugrunde liegende Datenmodell wird für Ansichten und Delegaten als Hierarchie von Tabellen bereitgestellt. Wenn Sie die Hierarchie nicht nutzen, handelt es sich bei dem Modell um eine einfache Tabelle aus Zeilen und Spalten. Jedes Element verfügt über einen eindeutigen Index, der durch ein ` QModelIndex` festgelegt wird.

Diagramm, das ein 3×3-Raster mit nummerierten Zeilen und Spalten zeigt, wobei die Zelle in Zeile 1, Spalte 2 hervorgehoben ist.

Jedes Datenelement, auf das über ein Modell zugegriffen werden kann, verfügt über einen zugehörigen Modellindex. Sie können diesen Modellindex mithilfe der Funktion „ index()“ abrufen. Jeder Index kann einen „ sibling()“-Index haben; untergeordnete Elemente verfügen über einen „ parent()“-Index.

Jedem Element sind mehrere Datenelemente zugeordnet, die durch Angabe einer Rolle (siehe „ Qt::ItemDataRole “) an die Funktion „ data()“ des Modells abgerufen werden können. Daten für alle verfügbaren Rollen können gleichzeitig mit der Funktion „ itemData()“ abgerufen werden.

Die Daten für jede Rolle werden mithilfe eines bestimmten „ Qt::ItemDataRole “ festgelegt. Die Daten für einzelne Rollen werden individuell mit „ setData()“ festgelegt, oder sie können mit „ setItemData()“ für alle Rollen festgelegt werden.

Elemente können mit ` flags()` (siehe ` Qt::ItemFlag`) abgefragt werden, um festzustellen, ob sie ausgewählt, gezogen oder auf andere Weise bearbeitet werden können.

Wenn ein Element untergeordnete Objekte hat, gibt ` hasChildren()` für den entsprechenden Index ` true ` zurück.

Das Modell verfügt über eine ` rowCount()` und eine ` columnCount()` für jede Ebene der Hierarchie. Zeilen und Spalten können mit ` insertRows()`, ` insertColumns()`, ` removeRows()` und ` removeColumns()` eingefügt und entfernt werden.

Das Modell sendet Signale aus, um Änderungen anzuzeigen. Beispielsweise wird „ dataChanged()“ immer dann ausgegeben, wenn vom Modell bereitgestellte Datenelemente geändert werden. Änderungen an den vom Modell bereitgestellten Headern führen dazu, dass „ headerDataChanged()“ ausgelöst wird. Wenn sich die Struktur der zugrunde liegenden Daten ändert, kann das Modell „ layoutChanged()“ auslösen, um allen angehängten Ansichten mitzuteilen, dass sie die angezeigten Elemente unter Berücksichtigung der neuen Struktur neu anzeigen sollen.

Die über das Modell verfügbaren Elemente können mit der Funktion „ match()“ nach bestimmten Daten durchsucht werden.

Um das Modell zu sortieren, können Sie die Funktion „ sort()“ verwenden.

Unterklassen

Hinweis: Einige allgemeine Richtlinien zur Erstellung von Unterklassen von Modellen finden Sie in der Referenz zur Erstellung von Modellunterklassen.

Wenn Sie eine Unterklasse von `QAbstractItemModel` erstellen, müssen Sie mindestens die Funktionen ` index()`, ` parent()`, ` rowCount()`, ` columnCount()` und ` data()` implementieren. Diese Funktionen werden in allen schreibgeschützten Modellen verwendet und bilden die Grundlage für bearbeitbare Modelle.

Sie können außerdem ` hasChildren()` neu implementieren, um ein spezielles Verhalten für Modelle bereitzustellen, bei denen die Implementierung von ` rowCount()` ressourcenintensiv ist. Dies ermöglicht es Modellen, die von Ansichten angeforderte Datenmenge zu begrenzen, und kann als Methode zur Implementierung einer verzögerten Laden von Modelldaten genutzt werden.

Um die Bearbeitung in Ihrem Modell zu ermöglichen, müssen Sie außerdem ` setData()` implementieren und ` flags()` neu implementieren, um sicherzustellen, dass ` ItemIsEditable ` zurückgegeben wird. Sie können auch ` headerData()` und ` setHeaderData()` neu implementieren, um die Darstellung der Kopfzeilen für Ihr Modell zu steuern.

Die Signale „ dataChanged()“ und „ headerDataChanged()“ müssen bei der Neuimplementierung der Funktionen „ setData()“ bzw. „ setHeaderData()“ explizit ausgelöst werden.

Benutzerdefinierte Modelle müssen Modellindizes erstellen, die von anderen Komponenten verwendet werden können. Rufen Sie dazu die Funktion ` createIndex()` mit geeigneten Zeilen- und Spaltennummern für das Element sowie einer Kennung für dieses Element auf, entweder als Zeiger oder als ganzzahligen Wert. Die Kombination dieser Werte muss für jedes Element eindeutig sein. Benutzerdefinierte Modelle verwenden diese eindeutigen Bezeichner in der Regel in anderen neu implementierten Funktionen, um Elementdaten abzurufen und auf Informationen über die über- und untergeordneten Elemente des Elements zuzugreifen. Weitere Informationen zu eindeutigen Bezeichnern finden Sie im Beispiel „Einfaches Baummodell “.

Es ist nicht erforderlich, jede in ` Qt::ItemDataRole` definierte Rolle zu unterstützen. Je nach Art der in einem Modell enthaltenen Daten kann es sinnvoll sein, lediglich die Funktion ` data()` zu implementieren, um gültige Informationen für einige der gängigeren Rollen zurückzugeben. Die meisten Modelle stellen zumindest eine textuelle Darstellung der Elementdaten für die Rolle ` Qt::DisplayRole` bereit, und gut funktionierende Modelle sollten auch gültige Informationen für die Rollen ` Qt::ToolTipRole ` und ` Qt::WhatsThisRole` bereitstellen. Die Unterstützung dieser Rollen ermöglicht die Verwendung der Modelle mit Standard-Qt-Ansichten. Bei einigen Modellen, die hochspezialisierte Daten verarbeiten, kann es jedoch sinnvoll sein, Daten nur für benutzerdefinierte Rollen bereitzustellen.

Modelle, die Schnittstellen zu in der Größe anpassbaren Datenstrukturen bereitstellen, können Implementierungen von ` insertRows()`, ` removeRows()`, ` insertColumns()` und ` removeColumns()` bereitstellen. Bei der Implementierung dieser Funktionen ist es wichtig, alle verbundenen Ansichten sowohl vor als auch nach dem Auftreten von Änderungen an den Abmessungen des Modells darüber zu informieren:

Die privaten Signale, die diese Funktionen auslösen, geben angehängten Komponenten die Möglichkeit, Maßnahmen zu ergreifen, bevor Daten nicht mehr verfügbar sind. Die Kapselung der Einfüge- und Entfernungsoperationen durch diese Start- und Endfunktionen ermöglicht es dem Modell zudem, „ persistent model indexes “ korrekt zu verwalten. Wenn Sie möchten, dass Auswahlen ordnungsgemäß verarbeitet werden, müssen Sie sicherstellen, dass Sie diese Funktionen aufrufen. Wenn Sie ein Element mit untergeordneten Elementen einfügen oder entfernen, müssen Sie diese Funktionen für die untergeordneten Elemente nicht aufrufen. Mit anderen Worten: Das übergeordnete Element kümmert sich um seine untergeordneten Elemente.

Um Modelle zu erstellen, die inkrementell gefüllt werden, können Sie die Methoden ` fetchMore()` und ` canFetchMore()` neu implementieren. Wenn durch die Neuimplementierung von ` fetchMore()` Zeilen zum Modell hinzugefügt werden, müssen ` beginInsertRows()` und ` endInsertRows()` aufgerufen werden.

Thread-Sicherheit

Da QAbstractItemModel eine Unterklasse von QObject ist, ist es nicht „ thread-safe “. Jede modellbezogene API von QAbstractItemModel sollte nur von dem Thread aus aufgerufen werden, in dem sich das Modellobjekt befindet. Wenn QAbstractItemModel mit einer Ansicht verbunden ist, arbeitet es im GUI-Thread, da sich die Ansicht dort befindet und von diesem Thread aus mit dem Modell interagiert. Zwar kann ein Hintergrund-Thread zum Befüllen oder Ändern des Modellinhalts verwendet werden, dies muss jedoch mit Bedacht geschehen, da er keine modellbezogenen API-Funktionen direkt aufrufen darf. Stattdessen sollten Sie die Aktualisierungen in eine Warteschlange stellen und im Haupt-Thread anwenden. Dies kann mithilfe von Queued Connections erfolgen.

Siehe auch Modellklassen, Referenz zur Unterklassifizierung von Modellen, „ QModelIndex “, „ QAbstractItemView “, „ QRangeModel “, „Drag & Drop mit Elementansichten verwenden“, „Beispiel für ein einfaches Baummodell“, „Beispiel für ein bearbeitbares Baummodell“ und „Beispiel für ‚Fetch More‘“.

Dokumentation zu Mitgliedstypen

enum class QAbstractItemModel::CheckIndexOption
flags QAbstractItemModel::CheckIndexOptions

Diese Enumeration kann verwendet werden, um die von ` QAbstractItemModel::checkIndex()` durchgeführten Prüfungen zu steuern.

KonstanteWertBeschreibung
QAbstractItemModel::CheckIndexOption::NoOption0x0000Es sind keine Prüfoptionen angegeben.
QAbstractItemModel::CheckIndexOption::IndexIsValid0x0001Der an ` QAbstractItemModel::checkIndex()` übergebene Modellindex wird auf Gültigkeit geprüft.
QAbstractItemModel::CheckIndexOption::DoNotUseParent0x0002Es wird keine Überprüfung durchgeführt, bei der das über „ QAbstractItemModel::checkIndex()“ übergebene übergeordnete Element des Indexes berücksichtigt wird.
QAbstractItemModel::CheckIndexOption::ParentIsInvalid0x0004Es wird geprüft, ob der über „ QAbstractItemModel::checkIndex()“ übergebene übergeordnete Modellindex ein ungültiger Modellindex ist. Wenn sowohl diese Option als auch „DoNotUseParent“ angegeben sind, wird diese Option ignoriert.

Der Typ `CheckIndexOptions` ist ein `typedef` für ` QFlags<CheckIndexOption>`. Er speichert eine ODER-Kombination von `CheckIndexOption`-Werten.

enum QAbstractItemModel::LayoutChangeHint

Diese Enumeration beschreibt, wie sich das Layout des Modells ändert.

KonstanteWertBeschreibung
QAbstractItemModel::NoLayoutChangeHint0Es ist kein Hinweis verfügbar.
QAbstractItemModel::VerticalSortHint1Die Zeilen werden sortiert.
QAbstractItemModel::HorizontalSortHint2Spalten werden sortiert.

Beachten Sie, dass „VerticalSortHint“ und „HorizontalSortHint“ bedeuten, dass Elemente innerhalb desselben übergeordneten Elements verschoben werden – sie werden nicht zu einem anderen übergeordneten Element im Modell verschoben und auch nicht heraus- oder hinzugefiltert.

Dokumentation der Member-Funktionen

[explicit] QAbstractItemModel::QAbstractItemModel(QObject *parent = nullptr)

Erstellt ein abstraktes Elementmodell mit der angegebenen „ parent “.

[virtual noexcept] QAbstractItemModel::~QAbstractItemModel()

Löscht das abstrakte Objektmodell.

[protected] void QAbstractItemModel::beginInsertColumns(const QModelIndex &parent, int first, int last)

Leitet einen Vorgang zum Einfügen einer Spalte ein.

Wenn Sie ` insertColumns()` in einer Unterklasse neu implementieren, müssen Sie diese Funktion aufrufen, bevor Sie Daten in den zugrunde liegenden Datenspeicher des Modells einfügen.

Der Index ` parent ` entspricht dem übergeordneten Element, in das die neuen Spalten eingefügt werden; ` first ` und ` last ` sind die Spaltennummern, die die neuen Spalten nach dem Einfügen haben werden.

Spalten 4, 5 und 6 in eine Zeile einfügenGeben Sie die erste und letzte Spaltennummer für den Spaltenbereich an, den Sie in ein Element eines Modells einfügen möchten.

Wie in der Abbildung dargestellt, fügen wir beispielsweise drei Spalten vor Spalte 4 ein, sodass first gleich 4 und last gleich 6 ist:

beginInsertColumns(parent, 4, 6);

Dadurch werden die drei neuen Spalten als Spalten 4, 5 und 6 eingefügt.

Spalten 6, 7 und 8 an eine Zeile anhängenUm Spalten anzuhängen, fügen Sie diese hinter der letzten Spalte ein.

Wie in der Abbildung gezeigt, fügen wir beispielsweise drei Spalten an eine Sammlung von sechs bestehenden Spalten (die mit Spalte 5 endet) an, sodass „ first “ den Wert 6 und „ last “ den Wert 8 hat:

beginInsertColumns(parent, 6, 8);

Dadurch werden die beiden neuen Spalten als Spalten 6, 7 und 8 angehängt.

Hinweis: Diese Funktion gibt das Signal „ columnsAboutToBeInserted()“ aus, das verbundene Ansichten (oder Proxys) verarbeiten müssen, bevor die Daten eingefügt werden. Andernfalls können die Ansichten in einen ungültigen Zustand geraten.

Siehe auch ` endInsertColumns()`.

[protected] void QAbstractItemModel::beginInsertRows(const QModelIndex &parent, int first, int last)

Leitet einen Vorgang zum Einfügen einer Zeile ein.

Wenn Sie ` insertRows()` in einer Unterklasse neu implementieren, müssen Sie diese Funktion aufrufen, bevor Sie Daten in den zugrunde liegenden Datenspeicher des Modells einfügen.

Der Index ` parent ` entspricht dem übergeordneten Element, in das die neuen Zeilen eingefügt werden; ` first ` und ` last ` sind die Zeilennummern, die die neuen Zeilen nach dem Einfügen haben werden.

Die Zeilen 2, 3 und 4 in eine Liste einfügenGeben Sie die erste und letzte Zeilennummer für den Bereich der Zeilen an, die Sie in ein Element eines Modells einfügen möchten.

Wie in der Abbildung gezeigt, fügen wir beispielsweise drei Zeilen vor Zeile 2 ein, sodass first den Wert 2 und last den Wert 4 hat:

beginInsertRows(parent, 2, 4);

Dadurch werden die drei neuen Zeilen als Zeilen 2, 3 und 4 eingefügt.

Die Zeilen 4 und 5 an eine Liste anhängenUm Zeilen anzuhängen, fügen Sie diese hinter der letzten Zeile ein.

Wie in der Abbildung gezeigt, fügen wir beispielsweise zwei Zeilen an eine Sammlung von 4 bestehenden Zeilen (die mit Zeile 3 endet) an, sodass „ first “ den Wert 4 und „ last “ den Wert 5 hat:

beginInsertRows(parent, 4, 5);

Dadurch werden die beiden neuen Zeilen als Zeilen 4 und 5 angehängt.

Hinweis: Diese Funktion gibt das Signal „ rowsAboutToBeInserted()“ aus, das angeschlossene Ansichten (oder Proxys) verarbeiten müssen, bevor die Daten eingefügt werden. Andernfalls können die Ansichten in einen ungültigen Zustand geraten.

Siehe auch ` endInsertRows()`.

[protected] bool QAbstractItemModel::beginMoveColumns(const QModelIndex &sourceParent, int sourceFirst, int sourceLast, const QModelIndex &destinationParent, int destinationChild)

Leitet einen Spaltenverschiebungsvorgang ein.

Bei der Neuimplementierung einer Unterklasse vereinfacht diese Methode das Verschieben von Entitäten in Ihrem Modell. Diese Methode ist für das Verschieben persistenter Indizes im Modell zuständig, was Sie andernfalls selbst durchführen müssten. Die Verwendung von „beginMoveColumns“ und „ endMoveColumns “ ist eine Alternative zur direkten Ausgabe von „ layoutAboutToBeChanged “ und „ layoutChanged “ zusammen mit „ changePersistentIndex “.

Der Index „ sourceParent “ entspricht dem übergeordneten Element, aus dem die Spalten verschoben werden; „ sourceFirst “ und „ sourceLast “ sind die Nummern der ersten bzw. letzten Spalte der zu verschiebenden Spalten. Der Index „ destinationParent “ entspricht dem übergeordneten Element, in das diese Spalten verschoben werden. „ destinationChild “ ist die Spalte, in die die Spalten verschoben werden. Das heißt, der Index an der Spalte „ sourceFirst “ in „ sourceParent “ wird zur Spalte „ destinationChild “ in „ destinationParent “, gefolgt von allen anderen Spalten bis hin zu „ sourceLast “.

Werden Spalten jedoch innerhalb desselben übergeordneten Elements nach unten verschoben (sourceParent und destinationParent sind identisch), werden die Spalten vor dem Index destinationChild platziert. Das heißt, wenn Sie die Spalten 0 und 1 so verschieben möchten, dass sie zu den Spalten 1 und 2 werden, sollte „ destinationChild “ den Wert 3 haben. In diesem Fall entspricht der neue Index für die Quellspalte „ i “ (die zwischen „ sourceFirst “ und „ sourceLast “ liegt) dem Wert „ (destinationChild-sourceLast-1+i) “.

Beachten Sie, dass Sie, falls sourceParent und destinationParent identisch sind, sicherstellen müssen, dass der destinationChild nicht im Bereich von sourceFirst und sourceLast + 1 liegt. Sie müssen außerdem sicherstellen, dass Sie nicht versuchen, eine Spalte in eines ihrer eigenen untergeordneten Elemente oder übergeordneten Elemente zu verschieben. Diese Methode gibt false zurück, wenn eine der beiden Bedingungen zutrifft; in diesem Fall sollten Sie den Verschiebungsvorgang abbrechen.

Siehe auch ` endMoveColumns()`.

[protected] bool QAbstractItemModel::beginMoveRows(const QModelIndex &sourceParent, int sourceFirst, int sourceLast, const QModelIndex &destinationParent, int destinationChild)

Leitet einen Zeilenverschiebungsvorgang ein.

Bei der Neuimplementierung einer Unterklasse vereinfacht diese Methode das Verschieben von Entitäten in Ihrem Modell. Diese Methode ist für das Verschieben persistenter Indizes im Modell zuständig, was Sie andernfalls selbst vornehmen müssten. Die Verwendung von `beginMoveRows` und ` endMoveRows ` ist eine Alternative zur direkten Ausgabe von ` layoutAboutToBeChanged ` und ` layoutChanged ` zusammen mit ` changePersistentIndex`.

Der Index „ sourceParent “ entspricht dem übergeordneten Element, aus dem die Zeilen verschoben werden; „ sourceFirst “ und „ sourceLast “ sind die Nummern der ersten bzw. letzten Zeile der zu verschiebenden Zeilen. Der Index „ destinationParent “ entspricht dem übergeordneten Element, in das diese Zeilen verschoben werden. „ destinationChild “ ist die Zeile, in die die Zeilen verschoben werden. Das heißt, der Index bei Zeile „ sourceFirst “ in „ sourceParent “ wird zu Zeile „ destinationChild “ in „ destinationParent “, gefolgt von allen anderen Zeilen bis hin zu „ sourceLast “.

Werden Zeilen jedoch innerhalb desselben übergeordneten Elements nach unten verschoben (sourceParent und destinationParent sind identisch), werden die Zeilen vor dem Index destinationChild platziert. Das heißt, wenn Sie die Zeilen 0 und 1 so verschieben möchten, dass sie zu den Zeilen 1 und 2 werden, sollte destinationChild den Wert 3 haben. In diesem Fall entspricht der neue Index für die Quellzeile i (die zwischen sourceFirst und sourceLast liegt) dem Wert (destinationChild-sourceLast-1+i).

Beachten Sie: Wenn sourceParent und destinationParent identisch sind, müssen Sie sicherstellen, dass destinationChild nicht im Bereich von sourceFirst und sourceLast + 1 liegt. Sie müssen außerdem sicherstellen, dass Sie nicht versuchen, eine Zeile zu einem ihrer eigenen Kinder oder Vorfahren zu verschieben. Diese Methode gibt false zurück, wenn eine der beiden Bedingungen zutrifft; in diesem Fall sollten Sie den Verschiebungsvorgang abbrechen.

Zeilen von einem übergeordneten Element zu einem anderen verschiebenGeben Sie die Nummern der ersten und letzten Zeile für den Zeilenbereich im Quell-Elternelement an, den Sie im Modell verschieben möchten. Geben Sie außerdem die Zeile im Ziel-Elternelement an, in die der Bereich verschoben werden soll.

Wie in der Abbildung gezeigt, verschieben wir beispielsweise drei Zeilen von Zeile 2 bis 4 im Quell-Elternelement; daher ist „ sourceFirst “ gleich 2 und „ sourceLast “ gleich 4. Wir verschieben diese Elemente im Ziel-Elternelement oberhalb von Zeile 2; daher ist „ destinationChild “ gleich 2.

beginMoveRows(sourceParent, 2, 4, destinationParent, 2);

Dadurch werden die drei Zeilen 2, 3 und 4 in der Quelle verschoben und nehmen in der Zieldatei die Positionen 2, 3 und 4 ein. Andere betroffene gleichrangige Elemente werden entsprechend verschoben.

Zeilen an ein anderes übergeordnetes Element anhängenUm Zeilen an ein anderes übergeordnetes Element anzuhängen, verschieben Sie sie hinter die letzte Zeile.

Wie in der Abbildung gezeigt, verschieben wir beispielsweise drei Zeilen in eine Sammlung von 6 vorhandenen Zeilen (die mit Zeile 5 endet), sodass „ destinationChild “ den Wert 6 annimmt:

beginMoveRows(sourceParent, 2, 4, destinationParent, 6);

Dadurch werden die Zielzeilen als 6, 7 und 8 an das Ende des Ziel-Elternelements verschoben.

Eine Zeile innerhalb desselben übergeordneten Elements nach oben verschiebenUm Zeilen innerhalb desselben übergeordneten Elements zu verschieben, geben Sie die Zeile an, in die sie verschoben werden sollen.

Wie in der Abbildung gezeigt, verschieben wir beispielsweise ein Element von Zeile 2 nach Zeile 0, sodass sourceFirst und sourceLast den Wert 2 erhalten und destinationChild den Wert 0.

beginMoveRows(parent, 2, 2, parent, 0);

Beachten Sie, dass andere Zeilen entsprechend verschoben werden können. Beachten Sie außerdem, dass Sie beim Verschieben von Elementen innerhalb desselben übergeordneten Elements keine ungültigen oder wirkungslosen Verschiebungen vornehmen sollten. Im obigen Beispiel befindet sich Element 2 vor der Verschiebung in Zeile 2; es kann daher weder in Zeile 2 (wo es sich bereits befindet) noch in Zeile 3 (keine Auswirkung, da Zeile 3 oberhalb von Zeile 3 liegt, wo es sich bereits befindet) verschoben werden.

Eine Zeile innerhalb desselben übergeordneten Elements nach unten verschiebenUm Zeilen innerhalb desselben übergeordneten Elements zu verschieben, geben Sie die Zeile an, in die sie verschoben werden sollen.

Wie im Diagramm dargestellt, verschieben wir beispielsweise ein Element von Zeile 2 nach Zeile 4, sodass sourceFirst und sourceLast den Wert 2 und destinationChild den Wert 4 haben.

beginMoveRows(parent, 2, 2, parent, 4);

Beachten Sie, dass andere Zeilen entsprechend verschoben werden können.

Siehe auch endMoveRows().

[protected] void QAbstractItemModel::beginRemoveColumns(const QModelIndex &parent, int first, int last)

Leitet einen Vorgang zum Entfernen einer Spalte ein.

Wenn Sie ` removeColumns()` in einer Unterklasse neu implementieren, müssen Sie diese Funktion aufrufen, bevor Sie Daten aus dem zugrunde liegenden Datenspeicher des Modells entfernen.

Der Index „ parent “ entspricht dem übergeordneten Element, aus dem die neuen Spalten entfernt werden; „ first “ und „ last “ sind die Spaltennummern der ersten bzw. letzten zu entfernenden Spalte.

Spalten 4, 5 und 6 aus einer Zeile entfernenGeben Sie die Nummern der ersten und letzten Spalte für den Spaltenbereich an, den Sie aus einem Element in einem Modell entfernen möchten.

Wie in der Abbildung gezeigt, entfernen wir beispielsweise die drei Spalten von Spalte 4 bis Spalte 6, sodass first gleich 4 und last gleich 6 ist:

beginRemoveColumns(parent, 4, 6);

Hinweis: Diese Funktion gibt das Signal „ columnsAboutToBeRemoved()“ aus, das angeschlossene Ansichten (oder Proxies) verarbeiten müssen, bevor die Daten entfernt werden. Andernfalls können die Ansichten in einen ungültigen Zustand geraten.

Siehe auch „ endRemoveColumns()“.

[protected] void QAbstractItemModel::beginRemoveRows(const QModelIndex &parent, int first, int last)

Leitet den Vorgang zum Löschen einer Zeile ein.

Wenn Sie ` removeRows()` in einer Unterklasse neu implementieren, müssen Sie diese Funktion aufrufen, bevor Sie Daten aus dem zugrunde liegenden Datenspeicher des Modells entfernen.

Der Index „ parent “ entspricht dem übergeordneten Element, aus dem die neuen Zeilen entfernt werden; „ first “ und „ last “ sind die Zeilennummern der zu entfernenden Zeilen.

Die Zeilen 2 und 3 aus einer Liste entfernenGeben Sie die erste und letzte Zeilennummer für den Bereich der Zeilen an, die Sie aus einem Element in einem Modell entfernen möchten.

Wie in der Abbildung gezeigt, entfernen wir beispielsweise die beiden Zeilen von Zeile 2 bis Zeile 3, sodass first gleich 2 und last gleich 3 ist:

beginRemoveRows(parent, 2, 3);

Hinweis: Diese Funktion gibt das Signal „ rowsAboutToBeRemoved()“ aus, das angeschlossene Ansichten (oder Proxies) verarbeiten müssen, bevor die Daten entfernt werden. Andernfalls können die Ansichten in einen ungültigen Zustand geraten.

Siehe auch „ endRemoveRows()“.

[protected] void QAbstractItemModel::beginResetModel()

Leitet einen Modell-Reset ein.

Ein Zurücksetzen setzt das Modell in allen zugehörigen Ansichten auf seinen aktuellen Zustand zurück.

Hinweis: Alle mit diesem Modell verknüpften Ansichten werden ebenfalls zurückgesetzt.

Wenn ein Modell zurückgesetzt wird, bedeutet dies, dass alle zuvor vom Modell gemeldeten Daten nun ungültig sind und erneut abgefragt werden müssen. Dies bedeutet auch, dass das aktuelle Element und alle ausgewählten Elemente ungültig werden.

Wenn sich die Daten eines Modells grundlegend ändern, ist es manchmal einfacher, einfach diese Funktion aufzurufen, anstatt ` dataChanged()` auszulösen, um andere Komponenten darüber zu informieren, dass sich die zugrunde liegende Datenquelle oder deren Struktur geändert hat.

Sie müssen diese Funktion aufrufen, bevor Sie interne Datenstrukturen in Ihrem Modell oder Proxy-Modell zurücksetzen.

Diese Funktion sendet das Signal ` modelAboutToBeReset()` aus.

Siehe auch „ modelAboutToBeReset()“, „ modelReset()“ und „ endResetModel()“.

[virtual] QModelIndex QAbstractItemModel::buddy(const QModelIndex &index) const

Gibt einen Modellindex für den „Buddy“ des Elements zurück, das durch ` index` dargestellt wird. Wenn der Benutzer ein Element bearbeiten möchte, ruft die Ansicht diese Funktion auf, um zu prüfen, ob stattdessen ein anderes Element im Modell bearbeitet werden sollte. Anschließend erstellt die Ansicht einen Delegaten unter Verwendung des vom „Buddy“-Element zurückgegebenen Modellindexes.

In der Standardimplementierung dieser Funktion fungiert jedes Element als sein eigener „Buddy“.

[virtual] bool QAbstractItemModel::canDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const

Gibt „ true “ zurück, wenn ein Modell ein „ data “ akzeptieren kann. Diese Standardimplementierung prüft lediglich, ob „ data “ mindestens ein Format in der Liste von „ mimeTypes()“ enthält und ob „ action “ zu den „ supportedDropActions()“ des Modells gehört.

Implementieren Sie diese Funktion in Ihrem benutzerdefinierten Modell neu, wenn Sie prüfen möchten, ob das Element „ data “ an den Positionen „ row “, „ column “ und „ parent “ mit dem Wert „ action “ abgelegt werden kann. Wenn Sie diese Prüfung nicht benötigen, ist es nicht erforderlich, diese Funktion neu zu implementieren.

Siehe auch „ dropMimeData()“ und „Drag & Drop mit Elementansichten verwenden“.

[virtual invokable] bool QAbstractItemModel::canFetchMore(const QModelIndex &parent) const

Gibt „ true “ zurück, wenn weitere Daten für „ parent “ verfügbar sind; andernfalls wird „ false “ zurückgegeben.

Die Standardimplementierung gibt immer „ false “ zurück.

Wenn canFetchMore() „ true “ zurückgibt, sollte die Funktion „ fetchMore()“ aufgerufen werden. Dies ist beispielsweise das Verhalten von „ QAbstractItemView “.

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

Siehe auch fetchMore().

[protected] void QAbstractItemModel::changePersistentIndex(const QModelIndex &from, const QModelIndex &to)

Ändert das Modell „ QPersistentModelIndex “, dessen Index mit dem angegebenen Modellindex unter from übereinstimmt, in den angegebenen Modellindex unter to.

Wurde kein persistenter Modellindex gefunden, der dem angegebenen Modellindex unter from entspricht, wird nichts geändert.

Siehe auch persistentIndexList() und changePersistentIndexList().

[protected] void QAbstractItemModel::changePersistentIndexList(const QModelIndexList &from, const QModelIndexList &to)

Ändert die {QPersistentModelIndex}-Elemente, die mit den Indizes in der angegebenen Modellindexliste unter from übereinstimmen, in die angegebene Modellindexliste unter to.

Wenn keine persistenten Modellindizes gefunden werden, die mit den Indizes in der angegebenen Modellindexliste „ from “ übereinstimmen, wird nichts geändert.

Siehe auch persistentIndexList() und changePersistentIndex().

bool QAbstractItemModel::checkIndex(const QModelIndex &index, QAbstractItemModel::CheckIndexOptions options = CheckIndexOption::NoOption) const

Diese Funktion prüft, ob „ index “ ein zulässiger Modellindex für dieses Modell ist. Ein zulässiger Modellindex ist entweder ein ungültiger Modellindex oder ein gültiger Modellindex, für den alle folgenden Bedingungen gelten:

  • Das Modell des Index ist „ this “;
  • die Zeilennummer des Index ist größer oder gleich Null;
  • Die Zeilennummer des Indexes ist kleiner als die Zeilenzahl des übergeordneten Indexes;
  • Die Spalte des Indexes ist größer oder gleich Null;
  • Die Spalte des Index ist kleiner als die Spaltenanzahl des übergeordneten Index.

Das Argument „ options “ kann einige dieser Prüfungen ändern. Wenn „ options “ den Wert „ IndexIsValid “ enthält, muss „ index “ ein gültiger Index sein; dies ist nützlich bei der Neuimplementierung von Funktionen wie „ data()“ oder „ setData()“, die gültige Indizes erwarten.

Wenn options den Eintrag DoNotUseParent enthält, werden die Prüfungen, die parent() aufrufen würden, übersprungen; dies ermöglicht den Aufruf dieser Funktion aus einer Neuimplementierung von parent() heraus (andernfalls würde dies zu einer endlosen Rekursion und einem Absturz führen).

Wenn options weder DoNotUseParent noch ParentIsInvalid enthält, wird eine zusätzliche Prüfung durchgeführt: Es wird überprüft, ob der übergeordnete Index ungültig ist. Dies ist nützlich bei der Implementierung flacher Modelle wie Listen oder Tabellen, bei denen kein Modellindex einen gültigen übergeordneten Index haben sollte.

Diese Funktion gibt „true“ zurück, wenn alle Prüfungen erfolgreich waren, andernfalls „false“. Dies ermöglicht die Verwendung der Funktion in „ Q_ASSERT “ und ähnlichen Debugging-Mechanismen. Wenn eine Prüfung fehlgeschlagen ist, wird in der Protokollkategorie „ qt.core.qabstractitemmodel.checkindex “ eine Warnmeldung ausgegeben, die Informationen enthält, die für die Fehlerbehebung nützlich sein können.

Hinweis: Diese Funktion ist eine Debugging-Hilfsfunktion für die Implementierung eigener Item-Modelle. Bei der Entwicklung komplexer Modelle sowie beim Aufbau komplizierter Modellhierarchien (z. B. unter Verwendung von Proxy-Modellen) ist es sinnvoll, diese Funktion aufzurufen, um Fehler im Zusammenhang mit unzulässigen Modellindizes (wie oben definiert) zu erkennen, die versehentlich an eine „ QAbstractItemModel “-API übergeben wurden.

Warnung: Beachten Sie , dass die Übergabe unzulässiger Indizes an Elementmodelle ein undefiniertes Verhalten darstellt; Anwendungen müssen daher davon Abstand nehmen und dürfen sich nicht auf etwaige „defensive“ Programmiermaßnahmen verlassen, die Elementmodelle möglicherweise einsetzen, um unzulässige Indizes korrekt zu behandeln.

Siehe auch QModelIndex.

[virtual, since 6.0] bool QAbstractItemModel::clearItemData(const QModelIndex &index)

Löscht die in allen Rollen für die angegebene „ index “ gespeicherten Daten. Gibt bei Erfolg „ true “ zurück; andernfalls „ false “. Das Signal „ dataChanged()“ sollte ausgelöst werden, wenn die Daten erfolgreich gelöscht wurden. Die Implementierung der Basisklasse gibt false

Diese Funktion wurde in Qt 6.0 eingeführt.

Siehe auch „ data()“, „ itemData()“, „ setData()“ und „ setItemData()“.

[pure virtual invokable] int QAbstractItemModel::columnCount(const QModelIndex &parent = QModelIndex()) const

Gibt die Anzahl der Spalten für die untergeordneten Elemente des angegebenen „ parent “ zurück.

In den meisten Unterklassen ist die Anzahl der Spalten unabhängig von parent.

Beispiel:

int MyModel::columnCount(const QModelIndex &parent) const
{
    Q_UNUSED(parent);
    return 3;
}

Hinweis: Bei der Implementierung eines tabellenbasierten Modells sollte `columnCount()` den Wert 0 zurückgeben, wenn das übergeordnete Element gültig ist.

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

Siehe auch ` rowCount()`.

[private signal] void QAbstractItemModel::columnsAboutToBeInserted(const QModelIndex &parent, int first, int last)

Dieses Signal wird unmittelbar vor dem Einfügen von Spalten in das Modell ausgelöst. Die neuen Elemente werden zwischen „ first “ und „ last “ (einschließlich) unterhalb des angegebenen Elements „ parent “ positioniert.

Hinweis: Mit diesem Signal verbundeneKomponenten nutzen es, um sich an Änderungen der Modellabmessungen anzupassen. Es kann nur von der Implementierung von ` QAbstractItemModel ` ausgesendet werden und lässt sich im Code von Unterklassen nicht explizit auslösen.

Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, kann jedoch nicht vom Benutzer ausgelöst werden.

Siehe auch „ insertColumns()“ und „ beginInsertColumns()“.

[private signal] void QAbstractItemModel::columnsAboutToBeMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationColumn)

Dieses Signal wird unmittelbar vor dem Verschieben von Spalten innerhalb des Modells ausgelöst. Verschoben werden die Elemente, die sich zwischen „ sourceStart “ und „ sourceEnd “ (einschließlich) unterhalb des angegebenen Elements „ sourceParent “ befinden. Sie werden unter dem Element „ destinationParent “ beginnend mit der Spalte „ destinationColumn “ verschoben.

Hinweis: An dieses Signal angeschlossene Komponenten nutzen es, um sich an Änderungen der Modellabmessungen anzupassen. Es kann nur von der Implementierung von QAbstractItemModel ausgesendet werden und darf im Code von Unterklassen nicht explizit ausgesendet werden.

Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, kann jedoch nicht vom Benutzer ausgelöst werden.

Siehe auch „ beginMoveRows()“.

[private signal] void QAbstractItemModel::columnsAboutToBeRemoved(const QModelIndex &parent, int first, int last)

Dieses Signal wird unmittelbar vor dem Entfernen von Spalten aus dem Modell ausgelöst. Es betrifft die Elemente zwischen „ first “ und „ last “ (einschließlich) unterhalb des angegebenen Elements „ parent “.

Hinweis: Mit diesem Signal verbundeneKomponenten nutzen es, um sich an Änderungen der Modellabmessungen anzupassen. Es kann nur von der Implementierung von ` QAbstractItemModel ` ausgesendet werden und darf im Code von Unterklassen nicht explizit ausgesendet werden.

Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, kann jedoch nicht vom Benutzer ausgelöst werden.

Siehe auch „ removeColumns()“ und „ beginRemoveColumns()“.

[private signal] void QAbstractItemModel::columnsInserted(const QModelIndex &parent, int first, int last)

Dieses Signal wird ausgelöst, nachdem Spalten in das Modell eingefügt wurden. Bei den neuen Elementen handelt es sich um diejenigen zwischen „ first “ und „ last “ (einschließlich) unter dem angegebenen Element „ parent “.

Hinweis: An dieses Signal angeschlosseneKomponenten nutzen es, um sich an Änderungen der Modellabmessungen anzupassen. Es kann nur von der Implementierung von ` QAbstractItemModel ` ausgesendet werden und lässt sich im Code von Unterklassen nicht explizit auslösen.

Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, kann jedoch nicht vom Benutzer ausgelöst werden.

Siehe auch „ insertColumns()“ und „ beginInsertColumns()“.

[private signal] void QAbstractItemModel::columnsMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationColumn)

Dieses Signal wird ausgelöst, nachdem Spalten innerhalb des Modells verschoben wurden. Die Elemente zwischen „ sourceStart “ und „ sourceEnd “ (einschließlich) unter dem angegebenen Element „ sourceParent “ wurden unter „ destinationParent “ an die Spalte „ destinationColumn “ verschoben.

Hinweis: An dieses Signal angeschlossene Komponenten nutzen es, um sich an Änderungen der Modellabmessungen anzupassen. Es kann nur von der Implementierung von ` QAbstractItemModel ` ausgegeben werden und darf im Code von Unterklassen nicht explizit ausgegeben werden.

Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, darf jedoch nicht vom Benutzer ausgelöst werden.

Siehe auch ` beginMoveRows()`.

[private signal] void QAbstractItemModel::columnsRemoved(const QModelIndex &parent, int first, int last)

Dieses Signal wird ausgelöst, nachdem Spalten aus dem Modell entfernt wurden. Bei den entfernten Elementen handelt es sich um diejenigen zwischen „ first “ und „ last “ (einschließlich), die unter dem angegebenen Element „ parent “ stehen.

Hinweis: Mit diesem Signal verbundeneKomponenten nutzen es, um sich an Änderungen der Modellabmessungen anzupassen. Es kann nur von der Implementierung von ` QAbstractItemModel ` ausgesendet werden und lässt sich im Code von Unterklassen nicht explizit aussenden.

Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, darf jedoch nicht vom Benutzer ausgelöst werden.

Siehe auch „ removeColumns()“ und „ beginRemoveColumns()“.

[static protected, since 6.12] Qt::weak_ordering QAbstractItemModel::compareData(const QVariant &left, const QVariant &right)

[static protected, since 6.12] Qt::weak_ordering QAbstractItemModel::compareData(const QVariant &left, const QVariant &right, const QCollator &collator)

Vergleicht das Objekt „ left “ ( QVariant ) mit dem Objekt „ right “ ( QVariant) und gibt die Reihenfolge als „ weak ordering “ zurück.

Wird die „ QVariant “ als Zeichenkette verglichen, wird das optionale „ collator “-Objekt für den Vergleich von „ locale-aware “ und „ case-sensitive “ verwendet. Wird kein Collator angegeben, werden Zeichenketten ausschließlich anhand der numerischen Unicode-Werte der Zeichen verglichen. Dies ist schnell, entspricht jedoch oft nicht den Erwartungen eines Benutzers an eine Benutzeroberfläche.

Diese Funktion eignet sich für Implementierungen von ` QAbstractItemModel::sort()`, da sie eine schwache Sortierreihenfolge auch für Variantenwerte bereitstellt, die nicht verglichen werden können, d. h. in Fällen, in denen ` QVariant::compare ` ` unordered` zurückgeben würde. Dadurch ist die Verwendung in ` std::sort ` und ` std::stable_sort` sicher, die Daten erfordern, die sortiert werden können.

void Model::sort(int column, Qt::SortOrder sortOrder)
{
    // Model operates on a QList<QVariant> data
    std::sort(data.begin(), data.end(), [=](const QVariant &lhs, const Variant &rhs){
        const auto ordering = compareData(lhs, rhs);
        return sortOrder == Qt::AscendingOrder ? sortOrder < 0 : sortOrder > 0;
    });
}

Wenn das Element „ left “ („ QVariant “) eine Zeichenkette enthält, werden die Varianten unter Verwendung der optionalen Funktion „ collator “ verglichen („ as strings “).

Andernfalls vergleicht die Implementierung left und right mithilfe von QVariant::compare(), was nur eine Teilordnung liefern kann. Wenn der Vergleich ein unordered Ergebnis liefert und die meta type von left und right nicht identisch sind, versucht die Funktion, die Varianten convert in einen gemeinsamen Typ umzuwandeln, und der Vergleich wird erneut versucht.

Führt dies weiterhin zu einem Ergebnis vom Typ „ unordered “, werden die Zeichenkettendarstellungen beider Varianten verglichen. Dabei können zwei leere Zeichenketten verglichen werden, die {Qt::weak_ordering::}{equivalent} sind.

Invalid variants Diese werden immer als größer als Varianten mit einem gültigen Wert verglichen.

Diese Funktionen wurden in Qt 6.12 eingeführt.

Siehe auch „Drei-Wege-Vergleich“, „ sort()“, „ QVariant::compare “ und „ QSortFilterProxyModel “.

[protected] QModelIndex QAbstractItemModel::createIndex(int row, int column, const void *ptr = nullptr) const

Erstellt einen Modellindex für die angegebenen „ row “ und „ column “ mit dem internen Zeiger „ ptr “.

Bei Verwendung eines ` QSortFilterProxyModel` verfügen dessen Indizes über einen eigenen internen Zeiger. Es wird davon abgeraten, außerhalb des Modells auf diesen internen Zeiger zuzugreifen. Verwenden Sie stattdessen die Funktion ` data()`.

Diese Funktion bietet eine einheitliche Schnittstelle, die Modellunterklassen zum Erstellen von Modellindizes verwenden müssen.

[protected] QModelIndex QAbstractItemModel::createIndex(int row, int column, quintptr id) const

Erstellt einen Modellindex für die angegebenen „ row “ und „ column “ mit der internen Kennung „ id “.

Diese Funktion stellt eine einheitliche Schnittstelle bereit, die Modellunterklassen zum Erstellen von Modellindizes verwenden müssen.

Siehe auch QModelIndex::internalId().

[pure virtual invokable] QVariant QAbstractItemModel::data(const QModelIndex &index, int role = Qt::DisplayRole) const

Gibt die unter dem angegebenen ` role ` gespeicherten Daten für das Element zurück, auf das ` index` verweist.

Hinweis: Wenn kein Wert zurückgegeben werden soll, geben Sie einen ungültigen (standardmäßig initialisierten) ` QVariant` zurück.

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

Siehe auch Qt::ItemDataRole, setData() und headerData().

[signal] void QAbstractItemModel::dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QList<int> &roles = QList<int>())

Dieses Signal wird immer dann ausgelöst, wenn sich die Daten eines vorhandenen Elements ändern.

Wenn die Elemente denselben übergeordneten Eintrag haben, sind die betroffenen Elemente diejenigen zwischen „ topLeft “ und „ bottomRight “ (einschließlich). Wenn die Elemente nicht denselben übergeordneten Eintrag haben, ist das Verhalten undefiniert.

Bei der Neuimplementierung der Funktion ` setData()` muss dieses Signal explizit ausgelöst werden.

Das optionale Argument ` roles ` kann verwendet werden, um anzugeben, welche Datenrollen tatsächlich geändert wurden. Ein leerer Vektor im Argument `roles` bedeutet, dass alle Rollen als geändert betrachtet werden sollen. Die Reihenfolge der Elemente im Argument `roles` spielt keine Rolle.

Siehe auch ` headerDataChanged()`, ` setData()` und ` layoutChanged()`.

[virtual] bool QAbstractItemModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)

Verarbeitet das durch einen Drag-and-Drop-Vorgang bereitgestellte ` data `, der mit dem angegebenen ` action` abgeschlossen wurde.

Gibt ` true ` zurück, wenn die Daten und die Aktion vom Modell verarbeitet wurden; andernfalls wird ` false` zurückgegeben.

Die angegebenen Werte ` row`, ` column ` und ` parent ` geben die Position eines Elements im Modell an, an der der Vorgang beendet wurde. Es liegt in der Verantwortung des Modells, die Aktion an der richtigen Stelle auszuführen.

Beispielsweise kann eine Ablegeaktion für ein Element in einem ` QTreeView ` dazu führen, dass neue Elemente entweder als untergeordnete Elemente des durch ` row`, ` column` und ` parent` angegebenen Elements oder als gleichrangige Elemente des Elements eingefügt werden.

Wenn row und column den Wert -1 haben, bedeutet dies, dass die abgelegten Daten so behandelt werden sollen, als wären sie direkt auf parent abgelegt worden. In der Regel bedeutet dies, dass die Daten als untergeordnete Elemente von parent angehängt werden. Sind row und column größer oder gleich Null, bedeutet dies, dass das Ablegen unmittelbar vor den angegebenen Elementen row und column in der angegebenen Liste parent erfolgte.

Die Methode „ mimeTypes()“ wird aufgerufen, um die Liste der zulässigen MIME-Typen abzurufen. Diese Standardimplementierung geht von der Standardimplementierung von „ mimeTypes()“ aus, die einen einzelnen Standard-MIME-Typ zurückgibt. Wenn Sie „ mimeTypes()“ in Ihrem benutzerdefinierten Modell neu implementieren, um mehrere MIME-Typen zurückzugeben, müssen Sie diese Funktion neu implementieren, um diese nutzen zu können.

Siehe auch „ supportedDropActions()“, „ canDropMimeData()“ und „Drag & Drop mit Elementansichten verwenden“.

[protected] void QAbstractItemModel::endInsertColumns()

Beendet einen Spalteneinfügevorgang.

Wenn Sie ` insertColumns()` in einer Unterklasse neu implementieren, müssen Sie diese Funktion aufrufen, nachdem Sie Daten in den zugrunde liegenden Datenspeicher des Modells eingefügt haben.

Siehe auch ` beginInsertColumns()`.

[protected] void QAbstractItemModel::endInsertRows()

Beendet einen Zeileneinfügevorgang.

Wenn Sie die Methode ` insertRows()` in einer Unterklasse neu implementieren, müssen Sie diese Funktion aufrufen, nachdem Sie Daten in den zugrunde liegenden Datenspeicher des Modells eingefügt haben.

Siehe auch ` beginInsertRows()`.

[protected] void QAbstractItemModel::endMoveColumns()

Beendet einen Spaltenverschiebungsvorgang.

Bei der Implementierung einer Unterklasse müssen Sie diese Funktion aufrufen, nachdem Sie Daten innerhalb des zugrunde liegenden Datenspeichers des Modells verschoben haben.

Siehe auch „ beginMoveColumns()“.

[protected] void QAbstractItemModel::endMoveRows()

Beendet einen Zeilenverschiebungsvorgang.

Bei der Implementierung einer Unterklasse müssen Sie diese Funktion aufrufen, nachdem Sie Daten innerhalb des zugrunde liegenden Datenspeichers des Modells verschoben haben.

Siehe auch ` beginMoveRows()`.

[protected] void QAbstractItemModel::endRemoveColumns()

Beendet einen Vorgang zum Entfernen einer Spalte.

Wenn Sie ` removeColumns()` in einer Unterklasse neu implementieren, müssen Sie diese Funktion aufrufen, nachdem Sie Daten aus dem zugrunde liegenden Datenspeicher des Modells entfernt haben.

Siehe auch ` beginRemoveColumns()`.

[protected] void QAbstractItemModel::endRemoveRows()

Beendet einen Vorgang zum Entfernen einer Zeile.

Wenn Sie ` removeRows()` in einer Unterklasse neu implementieren, müssen Sie diese Funktion aufrufen, nachdem Sie Daten aus dem zugrunde liegenden Datenspeicher des Modells entfernt haben.

Siehe auch ` beginRemoveRows()`.

[protected] void QAbstractItemModel::endResetModel()

Führt einen Modell-Reset durch.

Sie müssen diese Funktion aufrufen, nachdem Sie eine interne Datenstruktur in Ihrem Modell oder Proxy-Modell zurückgesetzt haben.

Diese Funktion löst das Signal „ modelReset()“ aus.

Siehe auch ` beginResetModel()`.

[virtual invokable] void QAbstractItemModel::fetchMore(const QModelIndex &parent)

Ruft alle verfügbaren Daten für die Elemente ab, deren übergeordneter Eintrag durch den Index „ parent “ angegeben ist.

Implementieren Sie dies neu, wenn Sie Ihr Modell schrittweise befüllen.

Die Standardimplementierung führt keine Aktion aus.

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

Siehe auch ` canFetchMore()`.

[virtual invokable] Qt::ItemFlags QAbstractItemModel::flags(const QModelIndex &index) const

Gibt die Element-Flags für das angegebene Element „ index “ zurück.

Die Implementierung der Basisklasse gibt eine Kombination von Flags zurück, die das Element (ItemIsEnabled) aktiviert und dessen Auswahl ermöglicht (ItemIsSelectable).

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

Siehe auch Qt::ItemFlags.

[virtual invokable] bool QAbstractItemModel::hasChildren(const QModelIndex &parent = QModelIndex()) const

Gibt „ true “ zurück, wenn „ parent “ Kinder hat; andernfalls wird „ false “ zurückgegeben.

Verwenden Sie ` rowCount()` auf dem übergeordneten Element, um die Anzahl der untergeordneten Elemente zu ermitteln.

Beachten Sie, dass es zu undefiniertem Verhalten führt, wenn mit dieser Methode gemeldet wird, dass ein bestimmter Index „hasChildren“ aufweist, während für denselben Index das Flag „ Qt::ItemNeverHasChildren “ gesetzt ist.

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

Siehe auch „ parent()“ und „ index()“.

[invokable] bool QAbstractItemModel::hasIndex(int row, int column, const QModelIndex &parent = QModelIndex()) const

Gibt „ true “ zurück, wenn das Modell für „ row “ und „ column “ mit „ parent “ ein gültiges „ QModelIndex “ zurückgibt; andernfalls wird „ false “ zurückgegeben.

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

[virtual invokable] QVariant QAbstractItemModel::headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const

Gibt die Daten für die in der Kopfzeile angegebenen Werte „ role “ und „ section “ unter Verwendung der angegebenen „ orientation “ zurück.

Bei horizontalen Kopfzeilen entspricht die Abschnittsnummer der Spaltennummer. Entsprechend entspricht bei vertikalen Kopfzeilen die Abschnittsnummer der Zeilennummer.

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

Siehe auch Qt::ItemDataRole, setHeaderData() und QHeaderView.

[signal] void QAbstractItemModel::headerDataChanged(Qt::Orientation orientation, int first, int last)

Dieses Signal wird immer dann ausgelöst, wenn sich ein Header ändert. Das Signal „ orientation “ gibt an, ob sich der horizontale oder der vertikale Header geändert hat. Die Abschnitte im Header von „ first “ bis „ last “ müssen aktualisiert werden.

Bei der Neuimplementierung der Funktion ` setHeaderData()` muss dieses Signal explizit ausgelöst werden.

Wenn Sie die Anzahl der Spalten oder Zeilen ändern, müssen Sie dieses Signal nicht ausgeben, sondern die begin/end-Funktionen verwenden (Einzelheiten finden Sie im Abschnitt über die Unterklassifizierung in der Beschreibung der Klasse „ QAbstractItemModel “).

Siehe auch „ headerData()“, „ setHeaderData()“ und „ dataChanged()“.

[pure virtual invokable] QModelIndex QAbstractItemModel::index(int row, int column, const QModelIndex &parent = QModelIndex()) const

Gibt den Index des Elements im Modell zurück, das durch die angegebenen Indizes „ row “, „ column “ und „ parent “ spezifiziert wird.

Wenn Sie diese Funktion in einer Unterklasse neu implementieren, rufen Sie ` createIndex()` auf, um Modellindizes zu generieren, mit denen andere Komponenten auf Elemente in Ihrem Modell verweisen können.

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

Siehe auch ` createIndex()`.

[invokable] bool QAbstractItemModel::insertColumn(int column, const QModelIndex &parent = QModelIndex())

Fügt eine einzelne Spalte vor der angegebenen Spalte „ column “ in die untergeordneten Elemente des angegebenen „ parent “ ein.

Gibt „ true “ zurück, wenn die Spalte eingefügt wurde; andernfalls wird „ false “ zurückgegeben.

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

Siehe auch „ insertColumns()“, „ insertRow()“ und „ removeColumn()“.

[virtual invokable] bool QAbstractItemModel::insertColumns(int column, int count, const QModelIndex &parent = QModelIndex())

Bei Modellen, die diese Funktion unterstützen, fügt „ count “ neue Spalten in das Modell ein, und zwar vor der angegebenen Spalte „ column “. Die Elemente in jeder neuen Spalte sind untergeordnete Elemente des Elements, das durch den Modellindex „ parent “ dargestellt wird.

Ist column gleich 0, werden die Spalten vor bereits vorhandenen Spalten eingefügt.

Ist ` column ` gleich ` columnCount()`, werden die Spalten an bereits vorhandene Spalten angehängt.

Wenn „ parent “ keine untergeordneten Elemente hat, wird eine einzelne Zeile mit den Spalten „ count “ eingefügt.

Gibt ` true ` zurück, wenn die Spalten erfolgreich eingefügt wurden; andernfalls wird ` false` zurückgegeben.

Die Implementierung der Basisklasse führt keine Aktion aus und gibt ` false` zurück.

Wenn Sie Ihr eigenes Modell implementieren, können Sie diese Funktion neu implementieren, falls Sie Einfügungen unterstützen möchten. Alternativ können Sie eine eigene API zum Ändern der Daten bereitstellen.

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

Siehe auch insertRows(), removeColumns(), beginInsertColumns() und endInsertColumns().

[invokable] bool QAbstractItemModel::insertRow(int row, const QModelIndex &parent = QModelIndex())

Fügt eine einzelne Zeile vor dem angegebenen „ row “ in die untergeordneten Elemente des angegebenen „ parent “ ein.

Hinweis: Diese Funktion ruft die virtuelle Methode ` insertRows` auf.

Gibt „ true “ zurück, wenn die Zeile eingefügt wurde; andernfalls wird „ false “ zurückgegeben.

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

Siehe auch ` insertRows()`, ` insertColumn()` und ` removeRow()`.

[virtual invokable] bool QAbstractItemModel::insertRows(int row, int count, const QModelIndex &parent = QModelIndex())

Hinweis: Die Implementierung dieser Funktion in der Basisklasse führt keine Aktion aus und gibt „ false “ zurück.

Bei Modellen, die dies unterstützen, werden „ count “-Zeilen vor dem angegebenen „ row “ in das Modell eingefügt. Die Elemente in der neuen Zeile werden Kinder des Elements, das durch den Modellindex „ parent “ repräsentiert wird.

Ist ` row ` gleich 0, werden die Zeilen vor allen vorhandenen Zeilen im übergeordneten Element eingefügt.

Ist row gleich rowCount(), werden die Zeilen an die vorhandenen Zeilen im übergeordneten Element angehängt.

Wenn „ parent “ keine untergeordneten Elemente hat, wird eine einzelne Spalte mit „ count “-Zeilen eingefügt.

Gibt ` true ` zurück, wenn die Zeilen erfolgreich eingefügt wurden; andernfalls wird ` false` zurückgegeben.

Wenn Sie ein eigenes Modell implementieren, können Sie diese Funktion neu implementieren, um Einfügungen zu unterstützen. Alternativ können Sie eine eigene API zum Ändern der Daten bereitstellen. In beiden Fällen müssen Sie ` beginInsertRows()` und ` endInsertRows()` aufrufen, um andere Komponenten darüber zu informieren, dass sich das Modell geändert hat.

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

Siehe auch insertColumns(), removeRows(), beginInsertRows() und endInsertRows().

[virtual] QMap<int, QVariant> QAbstractItemModel::itemData(const QModelIndex &index) const

Gibt eine Map mit Werten für alle vordefinierten Rollen im Modell für das Element unter der angegebenen Adresse index zurück.

Implementieren Sie diese Funktion neu, wenn Sie das Standardverhalten dieser Funktion erweitern möchten, um benutzerdefinierte Rollen in die Zuordnung aufzunehmen.

Siehe auch setItemData(), Qt::ItemDataRole und data().

[signal] void QAbstractItemModel::layoutAboutToBeChanged(const QList<QPersistentModelIndex> &parents = QList<QPersistentModelIndex>(), QAbstractItemModel::LayoutChangeHint hint = QAbstractItemModel::NoLayoutChangeHint)

Dieses Signal wird unmittelbar vor einer Änderung des Layouts eines Modells ausgegeben. Komponenten, die an dieses Signal angeschlossen sind, nutzen es, um sich an Änderungen im Layout des Modells anzupassen.

Unterklassen sollten nach dem Auslösen von `layoutAboutToBeChanged()` alle persistenten Modellindizes aktualisieren.

Der optionale Parameter ` parents ` dient dazu, genauer anzugeben, welche Teile des Layouts des Modells sich ändern. Eine leere Liste weist auf eine Änderung des Layouts des gesamten Modells hin. Die Reihenfolge der Elemente in der Liste ` parents ` ist dabei unerheblich. Der optionale Parameter ` hint ` dient dazu, einen Hinweis darauf zu geben, was während der Neuanordnung des Modells geschieht.

Siehe auch layoutChanged() und changePersistentIndex().

[signal] void QAbstractItemModel::layoutChanged(const QList<QPersistentModelIndex> &parents = QList<QPersistentModelIndex>(), QAbstractItemModel::LayoutChangeHint hint = QAbstractItemModel::NoLayoutChangeHint)

Dieses Signal wird immer dann ausgegeben, wenn sich das Layout der vom Modell bereitgestellten Elemente geändert hat; beispielsweise wenn das Modell sortiert wurde. Wenn dieses Signal von einer Ansicht empfangen wird, sollte diese das Layout der Elemente aktualisieren, um diese Änderung widerzuspiegeln.

Wenn Sie eine Unterklasse von ` QAbstractItemModel ` oder ` QAbstractProxyModel` erstellen, stellen Sie sicher, dass Sie ` layoutAboutToBeChanged()` auslösen, bevor Sie die Reihenfolge der Elemente ändern oder die Struktur der Daten modifizieren, die Sie den Ansichten zur Verfügung stellen, und dass Sie `layoutChanged()` auslösen, nachdem Sie das Layout geändert haben.

Der optionale Parameter ` parents ` dient dazu, genauer anzugeben, welche Teile des Layouts des Modells sich ändern. Eine leere Liste weist auf eine Änderung des Layouts des gesamten Modells hin. Die Reihenfolge der Elemente in der Liste ` parents ` spielt keine Rolle. Der optionale Parameter ` hint ` dient dazu, einen Hinweis darauf zu geben, was während der Neuanordnung des Modells geschieht.

Unterklassen sollten alle persistenten Modellindizes aktualisieren, bevor sie `layoutChanged()` auslösen. Mit anderen Worten: Wenn sich die Struktur ändert:

Siehe auch „ layoutAboutToBeChanged()“, „ dataChanged()“, „ headerDataChanged()“, „ modelReset()“ und „ changePersistentIndex()“.

[virtual invokable] QModelIndexList QAbstractItemModel::match(const QModelIndex &start, int role, const QVariant &value, int hits = 1, Qt::MatchFlags flags = Qt::MatchFlags(Qt::MatchStartsWith|Qt::MatchWrap)) const

Gibt eine Liste von Indizes für die Elemente in der Spalte des Indexes „ start “ zurück, bei denen die unter dem angegebenen „ role “ gespeicherten Daten mit dem angegebenen „ value “ übereinstimmen. Die Art und Weise, wie die Suche durchgeführt wird, wird durch den angegebenen „ flags “ definiert. Die zurückgegebene Liste kann leer sein. Beachten Sie außerdem, dass die Reihenfolge der Ergebnisse in der Liste möglicherweise nicht der Reihenfolge im Modell entspricht, wenn beispielsweise ein Proxy-Modell verwendet wird. Auf die Reihenfolge der Ergebnisse kann man sich nicht verlassen.

Die Suche beginnt beim Index „ start “ und wird fortgesetzt, bis die Anzahl der übereinstimmenden Dateneinträge „ hits “ erreicht, die Suche die letzte Zeile erreicht oder die Suche erneut „ start “ erreicht – je nachdem, ob „ MatchWrap “ in „ flags “ angegeben ist. Wenn Sie nach allen übereinstimmenden Einträgen suchen möchten, verwenden Sie „ hits = -1“.

Standardmäßig führt diese Funktion einen zyklischen, stringbasierten Vergleich aller Elemente durch und sucht dabei nach Elementen, die mit dem durch value angegebenen Suchbegriff beginnen.

Hinweis: Die Standardimplementierung dieser Funktion durchsucht nur Spalten. Implementieren Sie diese Funktion neu, um ein anderes Suchverhalten zu erzielen.

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

[virtual] QMimeData *QAbstractItemModel::mimeData(const QModelIndexList &indexes) const

Gibt ein Objekt zurück, das serialisierte Datenelemente enthält, die der angegebenen Liste von „ indexes “ entsprechen. Das zur Beschreibung der kodierten Daten verwendete Format wird von der Funktion ` mimeTypes()` bereitgestellt. Diese Standardimplementierung verwendet den Standard-MIME-Typ, der von der Standardimplementierung von ` mimeTypes()` zurückgegeben wird. Wenn Sie ` mimeTypes()` in Ihrem benutzerdefinierten Modell neu implementieren, um weitere MIME-Typen zurückzugeben, implementieren Sie diese Funktion neu, um diese zu nutzen.

Ist die Liste von ` indexes ` leer oder gibt es keine unterstützten MIME-Typen, wird ` nullptr ` anstelle einer serialisierten leeren Liste zurückgegeben.

Siehe auch ` mimeTypes()` und ` dropMimeData()`.

[virtual] QStringList QAbstractItemModel::mimeTypes() const

Gibt die Liste der zulässigen MIME-Typen zurück. Standardmäßig verwenden die integrierten Modelle und Ansichten einen internen MIME-Typ: application/x-qabstractitemmodeldatalist.

Wenn Sie in einem benutzerdefinierten Modell Drag-and-Drop-Unterstützung implementieren und Daten in anderen Formaten als dem standardmäßigen internen MIME-Typ zurückgeben möchten, implementieren Sie diese Funktion neu, um Ihre Liste der MIME-Typen zurückzugeben.

Wenn Sie diese Funktion in Ihrem benutzerdefinierten Modell neu implementieren, müssen Sie auch die Mitgliedsfunktionen neu implementieren, die sie aufrufen: ` mimeData()` und ` dropMimeData()`.

Siehe auch mimeData() und dropMimeData().

[private signal] void QAbstractItemModel::modelAboutToBeReset()

Dieses Signal wird ausgelöst, wenn „ beginResetModel()“ aufgerufen wird, bevor der interne Zustand des Modells (z. B. persistente Modellindizes) ungültig gemacht wurde.

Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, kann jedoch nicht vom Benutzer ausgelöst werden.

Siehe auch beginResetModel() und modelReset().

[private signal] void QAbstractItemModel::modelReset()

Dieses Signal wird ausgelöst, wenn „ endResetModel()“ aufgerufen wird, nachdem der interne Zustand des Modells (z. B. persistente Modellindizes) ungültig geworden ist.

Beachten Sie, dass bei einem Reset des Modells alle zuvor daraus abgerufenen Informationen als ungültig betrachtet werden sollten. Dies umfasst unter anderem die Funktionen ` rowCount()` und ` columnCount()`, ` flags()`, sowie Daten, die über ` data()` und ` roleNames()` abgerufen wurden.

Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, kann jedoch nicht vom Benutzer ausgelöst werden.

Siehe auch endResetModel() und modelAboutToBeReset().

[invokable] bool QAbstractItemModel::moveColumn(const QModelIndex &sourceParent, int sourceColumn, const QModelIndex &destinationParent, int destinationChild)

Bei Modellen, die dies unterstützen, werden die Dateien „ sourceColumn “ von „ sourceParent “ nach „ destinationChild “ unter „ destinationParent “ verschoben.

Gibt „ true “ zurück, wenn die Spalten erfolgreich verschoben wurden; andernfalls wird „ false “ zurückgegeben.

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

Siehe auch moveColumns() und moveRow().

[virtual invokable] bool QAbstractItemModel::moveColumns(const QModelIndex &sourceParent, int sourceColumn, int count, const QModelIndex &destinationParent, int destinationChild)

Bei Modellen, die dies unterstützen, werden die Spalten count, beginnend mit der angegebenen Spalte sourceColumn unter dem übergeordneten Element sourceParent, in die Spalte destinationChild unter dem übergeordneten Element destinationParent verschoben.

Gibt „ true “ zurück, wenn die Spalten erfolgreich verschoben wurden; andernfalls wird „ false “ zurückgegeben.

Die Implementierung der Basisklasse führt keine Aktion aus und gibt „ false “ zurück.

Wenn Sie Ihr eigenes Modell implementieren, können Sie diese Funktion neu implementieren, falls Sie das Verschieben unterstützen möchten. Alternativ können Sie eine eigene API zum Ändern der Daten bereitstellen.

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

Siehe auch „ beginMoveColumns()“ und „ endMoveColumns()“.

[invokable] bool QAbstractItemModel::moveRow(const QModelIndex &sourceParent, int sourceRow, const QModelIndex &destinationParent, int destinationChild)

Bei Modellen, die dies unterstützen, wird „ sourceRow “ von „ sourceParent “ nach „ destinationChild “ unter „ destinationParent “ verschoben.

Gibt „ true “ zurück, wenn die Zeilen erfolgreich verschoben wurden; andernfalls wird „ false “ zurückgegeben.

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

Siehe auch „ moveRows()“ und „ moveColumn()“.

[virtual invokable] bool QAbstractItemModel::moveRows(const QModelIndex &sourceParent, int sourceRow, int count, const QModelIndex &destinationParent, int destinationChild)

Bei Modellen, die dies unterstützen, werden die Zeilen unter count, beginnend mit der angegebenen Zeile sourceRow unter dem übergeordneten Element sourceParent, in die Zeile destinationChild unter dem übergeordneten Element destinationParent verschoben.

Gibt „ true “ zurück, wenn die Zeilen erfolgreich verschoben wurden; andernfalls wird „ false “ zurückgegeben.

Die Implementierung der Basisklasse führt keine Aktion aus und gibt „ false “ zurück.

Wenn Sie Ihr eigenes Modell implementieren, können Sie diese Funktion neu implementieren, falls Sie das Verschieben unterstützen möchten. Alternativ können Sie eine eigene API zum Ändern der Daten bereitstellen.

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

Siehe auch ` beginMoveRows()` und ` endMoveRows()`.

[virtual, since 6.0] void QAbstractItemModel::multiData(const QModelIndex &index, QModelRoleDataSpan roleDataSpan) const

Füllt die ` roleDataSpan ` mit den angeforderten Daten für die angegebene ` index`.

Die Standardimplementierung ruft für jede Rolle im Span einfach ` data()` auf. Eine Unterklasse kann diese Funktion neu implementieren, um Daten effizienter an Ansichten bereitzustellen:

void MyModel::multiData(const QModelIndex &index, QModelRoleDataSpan roleDataSpan) const
{
    for (QModelRoleData &roleData : roleDataSpan) {
        int role = roleData.role();

        // ... obtain the data for index and role ...

        roleData.setData(result);
    }
}

Im obigen Codeausschnitt ist ` index ` für den gesamten Aufruf identisch. Das bedeutet, dass der Zugriff auf die erforderlichen Datenstrukturen zum Abrufen der Informationen für ` index ` nur einmal erfolgen muss (durch Auslagern des entsprechenden Codes aus der Schleife).

Die Verwendung von ` QModelRoleData::setData()` oder analog ` QVariant::setValue()` wird gegenüber der separaten Erstellung eines ` QVariant ` und der Verwendung eines einfachen Zuweisungsoperators empfohlen; der Grund dafür ist, dass erstere die Wiederverwendung des bereits für das in einem ` QModelRoleData` gespeicherte ` QVariant `-Objekt zugewiesenen Speichers ermöglichen, während letztere immer eine neue Instanz zuweisen und anschließend die alte zerstören.

Beachten Sie, dass Views die Funktion `multiData()` mit `spans` aufrufen können, die bereits in früheren Aufrufen verwendet wurden und daher möglicherweise bereits Daten enthalten. Daher ist es zwingend erforderlich, dass das Modell, falls es die Daten für eine bestimmte Rolle nicht zurückgeben kann, die Daten im entsprechenden ` QModelRoleData `-Objekt löscht. Dies kann durch den Aufruf von ` QModelRoleData::clearData()` erfolgen oder in ähnlicher Weise durch das Setzen eines standardmäßig konstruierten ` QVariant` und so weiter. Werden die Daten nicht gelöscht, geht die Ansicht davon aus, dass die „alten“ Daten für die entsprechende Rolle verwendet werden sollen.

Um schließlich Code-Duplikate zu vermeiden, kann eine Unterklasse auch beschließen, ` data()` mithilfe von `multiData()` neu zu implementieren, indem sie einen Bereich mit nur einem Element angibt:

QVariant MyModel::data(const QModelIndex &index, int role) const
{
    QModelRoleData roleData(role);
    multiData(index, roleData);
    return roleData.data();
}

Hinweis: Modelle dürfen die Rollen im Bereich weder ändern noch die Elemente des Bereichs neu anordnen. Andernfalls kommt es zu undefiniertem Verhalten.

Hinweis: Es ist unzulässig, einen ungültigen Modellindex an diese Funktion zu übergeben.

Diese Funktion wurde in Qt 6.0 eingeführt.

Siehe auch ` QModelRoleDataSpan ` und ` data()`.

[pure virtual invokable] QModelIndex QAbstractItemModel::parent(const QModelIndex &index) const

Gibt das übergeordnete Element des Modellelements mit dem angegebenen „ index “ zurück. Wenn das Element kein übergeordnetes Element hat, wird ein ungültiger „ QModelIndex “ zurückgegeben.

Eine gängige Konvention bei Modellen, die Baumstrukturen darstellen, besagt, dass nur Elemente in der ersten Spalte untergeordnete Elemente haben. In diesem Fall wäre die Spalte des zurückgegebenen ` QModelIndex ` bei einer Neuimplementierung dieser Funktion in einer Unterklasse 0.

Achten Sie bei der Neuimplementierung dieser Funktion in einer Unterklasse darauf, den Aufruf von Memberfunktionen von ` QModelIndex ` wie beispielsweise ` QModelIndex::parent()` zu vermeiden, da Indizes, die zu Ihrem Modell gehören, einfach Ihre Implementierung aufrufen würden, was zu einer unendlichen Rekursion führen würde.

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

Siehe auch ` createIndex()`.

[protected] QModelIndexList QAbstractItemModel::persistentIndexList() const

Gibt die Liste der Indizes zurück, die als persistente Indizes im Modell gespeichert sind.

[invokable] bool QAbstractItemModel::removeColumn(int column, const QModelIndex &parent = QModelIndex())

Entfernt die angegebene „ column “ aus den untergeordneten Elementen des angegebenen „ parent “.

Gibt „ true “ zurück, wenn die Spalte entfernt wurde; andernfalls wird „ false “ zurückgegeben.

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

Siehe auch „ removeColumns()“, „ removeRow()“ und „ insertColumn()“.

[virtual invokable] bool QAbstractItemModel::removeColumns(int column, int count, const QModelIndex &parent = QModelIndex())

Entfernt bei Modellen, die dies unterstützen, die Spalten count, die mit dem angegebenen column beginnen und sich unter dem übergeordneten parent befinden, aus dem Modell.

Gibt „ true “ zurück, wenn die Spalten erfolgreich entfernt wurden; andernfalls wird „ false “ zurückgegeben.

Die Implementierung der Basisklasse führt keine Aktion aus und gibt „ false “ zurück.

Wenn Sie Ihr eigenes Modell implementieren, können Sie diese Funktion neu implementieren, falls Sie das Entfernen unterstützen möchten. Alternativ können Sie eine eigene API zum Ändern der Daten bereitstellen.

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

Siehe auch „ removeColumn()“, „ removeRows()“, „ insertColumns()“, „ beginRemoveColumns()“ und „ endRemoveColumns()“.

[invokable] bool QAbstractItemModel::removeRow(int row, const QModelIndex &parent = QModelIndex())

Entfernt den angegebenen „ row “ aus den untergeordneten Elementen des angegebenen „ parent “.

Gibt „ true “ zurück, wenn die Zeile entfernt wurde; andernfalls wird „ false “ zurückgegeben.

Dies ist eine Komfortfunktion, die ` removeRows()` aufruft. Die ` QAbstractItemModel `-Implementierung von ` removeRows()` führt keine Aktion aus.

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

Siehe auch removeRows(), removeColumn() und insertRow().

[virtual invokable] bool QAbstractItemModel::removeRows(int row, int count, const QModelIndex &parent = QModelIndex())

Entfernt bei Modellen, die dies unterstützen, die Zeilen count, die mit der angegebenen row unter dem übergeordneten parent beginnen, aus dem Modell.

Gibt „ true “ zurück, wenn die Zeilen erfolgreich entfernt wurden; andernfalls wird „ false “ zurückgegeben.

Die Implementierung der Basisklasse führt keine Aktion aus und gibt „ false “ zurück.

Wenn Sie ein eigenes Modell implementieren, können Sie diese Funktion neu implementieren, falls Sie das Entfernen unterstützen möchten. Alternativ können Sie eine eigene API zum Ändern der Daten bereitstellen.

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

Siehe auch removeRow(), removeColumns(), insertColumns(), beginRemoveRows() und endRemoveRows().

[virtual protected slot] void QAbstractItemModel::resetInternalData()

Dieser Slot wird unmittelbar nach dem Löschen der internen Daten eines Modells während dessen Zurücksetzung aufgerufen.

Dieser Slot dient der Erleichterung für Unterklassen konkreter Proxy-Modelle, wie beispielsweise Unterklassen von ` QSortFilterProxyModel `, die zusätzliche Daten verwalten.

class CustomDataProxy : public QSortFilterProxyModel
{
    Q_OBJECT
public:
    CustomDataProxy(QObject *parent)
      : QSortFilterProxyModel(parent)
    {
    }

    //...

    QVariant data(const QModelIndex &index, int role) const override
    {
        if (role != Qt::BackgroundRole)
            return QSortFilterProxyModel::data(index, role);

        if (m_customData.contains(index.row()))
            return m_customData.value(index.row());
        return QSortFilterProxyModel::data(index, role);
    }

private slots:
    void resetInternalData()
    {
        m_customData.clear();
    }

private:
  QHash<int, QVariant> m_customData;
};

Hinweis: Aufgrund eines Fehlers fehlt dieser Slot in Qt 5.0.

Siehe auch ` modelAboutToBeReset()` und ` modelReset()`.

[virtual slot] void QAbstractItemModel::revert()

Teilt dem Modell mit, dass es zwischengespeicherte Informationen verwerfen soll. Diese Funktion wird in der Regel für die Bearbeitung von Zeilen verwendet.

Siehe auch ` submit()`.

[virtual] QHash<int, QByteArray> QAbstractItemModel::roleNames() const

Gibt die Rollennamen des Modells zurück.

Die von Qt festgelegten Standardrollennamen lauten:

Qt-RolleQML-Rollenname
Qt::DisplayRoledisplay
Qt::DecorationRoledecoration
Qt::EditRoleedit
Qt::ToolTipRoleTooltip
Qt::StatusTipRoleStatus-Tooltip
Qt::WhatsThisRoleWas ist das?

[pure virtual invokable] int QAbstractItemModel::rowCount(const QModelIndex &parent = QModelIndex()) const

Gibt die Anzahl der Zeilen unter dem angegebenen „ parent “ zurück. Ist das übergeordnete Element gültig, gibt „rowCount“ die Anzahl der untergeordneten Elemente des übergeordneten Elements zurück.

Hinweis: Bei der Implementierung eines tabellenbasierten Modells sollte `rowCount()` den Wert 0 zurückgeben, wenn das übergeordnete Element gültig ist.

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

Siehe auch ` columnCount()`.

[private signal] void QAbstractItemModel::rowsAboutToBeInserted(const QModelIndex &parent, int start, int end)

Dieses Signal wird unmittelbar vor dem Einfügen von Zeilen in das Modell ausgelöst. Die neuen Elemente werden zwischen „ start “ und „ end “ (einschließlich) unterhalb des angegebenen Elements „ parent “ positioniert.

Hinweis: An dieses Signal angeschlosseneKomponenten nutzen es, um sich an Änderungen der Modellabmessungen anzupassen. Es kann nur von der Implementierung von ` QAbstractItemModel ` ausgesendet werden und lässt sich im Code von Unterklassen nicht explizit aussenden.

Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, darf jedoch nicht vom Benutzer ausgelöst werden.

Siehe auch „ insertRows()“ und „ beginInsertRows()“.

[private signal] void QAbstractItemModel::rowsAboutToBeMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationRow)

Dieses Signal wird unmittelbar vor dem Verschieben von Zeilen innerhalb des Modells ausgelöst. Verschoben werden die Elemente, die sich zwischen sourceStart und sourceEnd (einschließlich) unterhalb des angegebenen Elements sourceParent befinden. Sie werden beginnend mit der Zeile destinationRow an die Adresse destinationParent verschoben.

Hinweis: An dieses Signal angeschlossene Komponenten nutzen es, um sich an Änderungen der Modellabmessungen anzupassen. Es kann nur von der Implementierung von QAbstractItemModel ausgegeben werden und darf im Code von Unterklassen nicht explizit ausgegeben werden.

Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, darf jedoch nicht vom Benutzer ausgelöst werden.

Siehe auch ` beginMoveRows()`.

[private signal] void QAbstractItemModel::rowsAboutToBeRemoved(const QModelIndex &parent, int first, int last)

Dieses Signal wird unmittelbar vor dem Entfernen von Zeilen aus dem Modell ausgelöst. Entfernt werden die Elemente zwischen „ first “ und „ last “ (einschließlich) unterhalb des angegebenen Elements „ parent “.

Hinweis: Mit diesem Signal verbundeneKomponenten nutzen es, um sich an Änderungen der Modellabmessungen anzupassen. Es kann nur von der Implementierung von ` QAbstractItemModel ` ausgesendet werden und lässt sich im Code von Unterklassen nicht explizit aussenden.

Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, darf jedoch nicht vom Benutzer ausgelöst werden.

Siehe auch „ removeRows()“ und „ beginRemoveRows()“.

[private signal] void QAbstractItemModel::rowsInserted(const QModelIndex &parent, int first, int last)

Dieses Signal wird ausgelöst, nachdem Zeilen in das Modell eingefügt wurden. Bei den neuen Elementen handelt es sich um diejenigen zwischen „ first “ und „ last “ (einschließlich) unterhalb des angegebenen Elements „ parent “.

Hinweis: Mit diesem Signal verbundeneKomponenten nutzen es, um sich an Änderungen der Modellabmessungen anzupassen. Es kann nur von der Implementierung von ` QAbstractItemModel ` ausgesendet werden und darf im Code von Unterklassen nicht explizit ausgesendet werden.

Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, darf jedoch nicht vom Benutzer ausgelöst werden.

Siehe auch „ insertRows()“ und „ beginInsertRows()“.

[private signal] void QAbstractItemModel::rowsMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationRow)

Dieses Signal wird ausgelöst, nachdem Zeilen innerhalb des Modells verschoben wurden. Die Elemente zwischen „ sourceStart “ und „ sourceEnd “ (einschließlich) unter dem angegebenen Element „ sourceParent “ wurden unter „ destinationParent “ beginnend mit der Zeile „ destinationRow “ verschoben.

Hinweis: An dieses Signal angeschlossene Komponenten nutzen es, um sich an Änderungen der Modellabmessungen anzupassen. Es kann nur von der Implementierung von „ QAbstractItemModel “ ausgegeben werden und darf im Code von Unterklassen nicht explizit ausgegeben werden.

Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, kann jedoch nicht vom Benutzer ausgelöst werden.

Siehe auch ` beginMoveRows()`.

[private signal] void QAbstractItemModel::rowsRemoved(const QModelIndex &parent, int first, int last)

Dieses Signal wird ausgelöst, nachdem Zeilen aus dem Modell entfernt wurden. Bei den entfernten Elementen handelt es sich um diejenigen zwischen „ first “ und „ last “ (einschließlich) unterhalb des angegebenen Elements „ parent “.

Hinweis: An dieses Signal angeschlosseneKomponenten nutzen es, um sich an Änderungen der Modelldimensionen anzupassen. Es kann nur von der Implementierung von ` QAbstractItemModel ` ausgesendet werden und darf im Code von Unterklassen nicht explizit ausgesendet werden.

Hinweis: Dies ist ein privates Signal. Es kann in Signalverbindungen verwendet werden, darf jedoch nicht vom Benutzer ausgelöst werden.

Siehe auch „ removeRows()“ und „ beginRemoveRows()“.

[virtual invokable] bool QAbstractItemModel::setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole)

Setzt die „ role “-Daten für das Element unter index auf value.

Gibt bei Erfolg „ true “ zurück; andernfalls „ false “.

Das Signal „ dataChanged()“ sollte ausgelöst werden, wenn die Daten erfolgreich gesetzt wurden.

Die Implementierung der Basisklasse gibt „ false “ zurück. Diese Funktion und „ data()“ müssen für bearbeitbare Modelle neu implementiert werden.

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

Siehe auch Qt::ItemDataRole, data() und itemData().

[virtual] bool QAbstractItemModel::setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole)

Setzt die Daten für die angegebenen Felder „ role “ und „ section “ im Header mit der angegebenen „ orientation “ auf den angegebenen „ value “.

Gibt „ true “ zurück, wenn die Daten des Headers aktualisiert wurden; andernfalls wird „ false “ zurückgegeben.

Bei der Neuimplementierung dieser Funktion muss das Signal „ headerDataChanged()“ explizit ausgelöst werden.

Siehe auch „ Qt::ItemDataRole “ und „ headerData()“.

[virtual] bool QAbstractItemModel::setItemData(const QModelIndex &index, const QMap<int, QVariant> &roles)

Setzt die Rollendaten für das Element unter index auf den zugehörigen Wert unter roles – und zwar für jedes Element unter Qt::ItemDataRole.

Gibt bei Erfolg „ true “ zurück; andernfalls wird „ false “ zurückgegeben.

Rollen, die nicht in roles enthalten sind, werden nicht geändert.

Siehe auch setData(), data() und itemData().

[virtual invokable] QModelIndex QAbstractItemModel::sibling(int row, int column, const QModelIndex &index) const

Gibt das Geschwisterelement an den Koordinaten row und column für das Element an der Koordinate index zurück oder einen ungültigen Wert QModelIndex, falls an dieser Stelle kein Geschwisterelement vorhanden ist.

sibling() ist lediglich eine Hilfsfunktion, die das übergeordnete Element des Elements ermittelt und dieses verwendet, um den Index des untergeordneten Elements an den angegebenen Positionen row und column abzurufen.

Diese Methode kann optional zur implementierungsspezifischen Optimierung überschrieben werden.

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

Siehe auch index(), QModelIndex::row() und QModelIndex::column().

[virtual invokable] void QAbstractItemModel::sort(int column, Qt::SortOrder order = Qt::AscendingOrder)

Sortiert das Modell nach „ column “ in der angegebenen „ order “.

Die Implementierung der Basisklasse führt keine Aktion aus.

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

[virtual] QSize QAbstractItemModel::span(const QModelIndex &index) const

Gibt den Zeilen- und Spaltenbereich des Elements zurück, das durch „ index “ dargestellt wird.

Hinweis: Derzeit wird „span“ nicht verwendet.

[virtual slot] bool QAbstractItemModel::submit()

Teilt dem Modell mit, dass es zwischengespeicherte Informationen in den permanenten Speicher übertragen soll. Diese Funktion wird in der Regel zur Bearbeitung von Zeilen verwendet.

Gibt „ true “ zurück, wenn kein Fehler vorliegt; andernfalls wird „ false “ zurückgegeben.

Siehe auch ` revert()`.

[virtual] Qt::DropActions QAbstractItemModel::supportedDragActions() const

Gibt die Aktionen zurück, die von den Daten in diesem Modell unterstützt werden.

Die Standardimplementierung gibt ` supportedDropActions()` zurück. Implementieren Sie diese Funktion neu, wenn Sie zusätzliche Aktionen unterstützen möchten.

`supportedDragActions()` wird von ` QAbstractItemView::startDrag()` als Standardwerte verwendet, wenn ein Drag-Vorgang stattfindet.

Siehe auch ` Qt::DropActions ` und „Drag & Drop mit Elementansichten verwenden“.

[virtual] Qt::DropActions QAbstractItemModel::supportedDropActions() const

Gibt die von diesem Modell unterstützten Drop-Aktionen zurück.

Die Standardimplementierung gibt „ Qt::CopyAction “ zurück. Implementieren Sie diese Funktion neu, wenn Sie zusätzliche Aktionen unterstützen möchten. Sie müssen außerdem die Funktion „ dropMimeData()“ neu implementieren, um die zusätzlichen Operationen zu verarbeiten.

Siehe auch „ dropMimeData()“, „ Qt::DropActions “ und „Drag & Drop mit Elementansichten verwenden“.

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