QAbstractListModel Class
Die Klasse QAbstractListModel stellt ein abstraktes Modell zur Verfügung, das zur Erstellung eindimensionaler Listenmodelle subklassifiziert werden kann. Mehr...
Kopfzeile: | #include <QAbstractListModel> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
Vererbt: | QAbstractItemModel |
Vererbt von: | QPdfLinkModel, QPdfSearchModel, QStringListModel, QVirtualKeyboardSelectionListModel, und QWebEngineHistoryModel |
Öffentliche Funktionen
QAbstractListModel(QObject *parent = nullptr) | |
virtual | ~QAbstractListModel() |
Reimplementierte öffentliche Funktionen
virtual bool | dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override |
virtual Qt::ItemFlags | flags(const QModelIndex &index) const override |
virtual QModelIndex | index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const override |
virtual QModelIndex | sibling(int row, int column, const QModelIndex &idx) const override |
Detaillierte Beschreibung
QAbstractListModel bietet eine Standardschnittstelle für Modelle, die ihre Daten als einfache nicht-hierarchische Folge von Elementen darstellen. Sie wird nicht direkt verwendet, sondern muss subclassed werden.
Da das Modell eine speziellere Schnittstelle als QAbstractItemModel bietet, ist es nicht für die Verwendung mit Baumansichten geeignet; Sie müssen QAbstractItemModel unterklassifizieren, wenn Sie ein Modell für diesen Zweck bereitstellen wollen. Wenn Sie eine Reihe von Listenmodellen zur Verwaltung von Daten verwenden müssen, kann es sinnvoller sein, stattdessen die Unterklasse QAbstractTableModel zu verwenden.
Einfache Modelle können durch Unterklassifizierung dieser Klasse und Implementierung der Mindestanzahl der erforderlichen Funktionen erstellt werden. Wir könnten zum Beispiel ein einfaches schreibgeschütztes QStringList-basiertes Modell implementieren, das eine Liste von Strings an ein QListView -Widget liefert. In einem solchen Fall müssen wir nur die Funktion rowCount() implementieren, um die Anzahl der Elemente in der Liste zurückzugeben, und die Funktion data(), um Elemente aus der Liste abzurufen.
Da das Modell eine eindimensionale Struktur darstellt, gibt die Funktion rowCount() die Gesamtzahl der Elemente im Modell zurück. Die Funktion columnCount() ist für die Interoperabilität mit allen Arten von Ansichten implementiert, teilt den Ansichten jedoch standardmäßig mit, dass das Modell nur eine Spalte enthält.
Unterklassifizierung
Wenn Sie QAbstractListModel subclassing, müssen Sie Implementierungen der Funktionen rowCount() und data() bereitstellen. Gut funktionierende Modelle bieten auch eine headerData()-Implementierung.
Wenn Ihr Modell innerhalb von QML verwendet wird und andere Rollen als die Standardrollen benötigt, die von der Funktion roleNames() bereitgestellt werden, müssen Sie diese überschreiben.
Für editierbare Listenmodelle müssen Sie auch eine Implementierung von setData() bereitstellen, und die Funktion flags() so implementieren, dass sie einen Wert zurückgibt, der Qt::ItemIsEditable enthält.
Beachten Sie, dass QAbstractListModel eine Standardimplementierung von columnCount() bereitstellt, die die Ansichten darüber informiert, dass es nur eine einzige Spalte mit Elementen in diesem Modell gibt.
Modelle, die Schnittstellen zu größenveränderlichen listenähnlichen Datenstrukturen anbieten, können Implementierungen von insertRows() und removeRows() bereitstellen. Bei der Implementierung dieser Funktionen ist es wichtig, die entsprechenden Funktionen aufzurufen, damit alle angeschlossenen Sichten über Änderungen informiert sind:
- Eine insertRows()-Implementierung muss beginInsertRows() aufrufen , bevor neue Zeilen in die Datenstruktur eingefügt werden, und sie muss endInsertRows() unmittelbar danach aufrufen.
- Eine removeRows()-Implementierung muss beginRemoveRows() aufrufen , bevor die Zeilen aus der Datenstruktur entfernt werden, und sie muss endRemoveRows() unmittelbar danach aufrufen.
Hinweis: Einige allgemeine Richtlinien für die Subklassifizierung von Modellen sind in der Model Subclassing Reference verfügbar.
Siehe auch Model Classes, Model Subclassing Reference, QAbstractItemView, und QAbstractTableModel.
Dokumentation der Mitgliedsfunktionen
[explicit]
QAbstractListModel::QAbstractListModel(QObject *parent = nullptr)
Konstruiert ein abstraktes Listenmodell mit der angegebenen parent.
[virtual noexcept]
QAbstractListModel::~QAbstractListModel()
Zerstört das abstrakte Listenmodell.
[override virtual]
bool QAbstractListModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)
Reimplements: QAbstractItemModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent).
[override virtual]
Qt::ItemFlags QAbstractListModel::flags(const QModelIndex &index) const
Reimplements: QAbstractItemModel::flags(const QModelIndex &index) const.
[override virtual]
QModelIndex QAbstractListModel::index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const
Reimplements: QAbstractItemModel::index(int row, int column, const QModelIndex &parent) const.
Gibt den Index der Daten in row und column mit parent zurück.
Siehe auch parent().
[override virtual]
QModelIndex QAbstractListModel::sibling(int row, int column, const QModelIndex &idx) const
Reimplements: QAbstractItemModel::sibling(int row, int column, const QModelIndex &index) const.
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.