QAbstractTableModel Class
Die Klasse „QAbstractTableModel“ stellt ein abstraktes Modell bereit, von dem Unterklassen abgeleitet werden können, um Tabellenmodelle zu erstellen. Mehr...
| Überschrift: | #include <QAbstractTableModel> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| Erbt von: | QAbstractItemModel |
| Vererbt an: |
Öffentliche Funktionen
| QAbstractTableModel(QObject *parent = nullptr) | |
| virtual | ~QAbstractTableModel() |
Neu implementierte ö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, const QModelIndex &parent = QModelIndex()) const override |
| virtual QModelIndex | sibling(int row, int column, const QModelIndex &idx) const override |
Ausführliche Beschreibung
QAbstractTableModel bietet eine Standardschnittstelle für Modelle, die ihre Daten als zweidimensionales Array von Elementen darstellen. Es wird nicht direkt verwendet, sondern muss unterklassifiziert werden.
Da das Modell eine spezialisiertere Schnittstelle als „ QAbstractItemModel “ bietet, eignet es sich nicht für die Verwendung mit Baumansichten, kann jedoch zur Bereitstellung von Daten für ein „ QListView “ verwendet werden. Wenn Sie eine einfache Liste von Elementen darstellen möchten und ein Modell benötigen, das nur eine einzige Datenspalte enthält, ist die Erstellung einer Unterklasse von „ QAbstractListModel “ möglicherweise besser geeignet.
Die Funktionen „ rowCount()“ und „ columnCount()“ geben die Dimensionen der Tabelle zurück. Um einen Modellindex abzurufen, der einem Element im Modell entspricht, verwenden Sie „ index()“ und geben Sie dabei nur die Zeilen- und Spaltennummern an.
Unterklassenbildung
Wenn Sie eine Unterklasse von `QAbstractTableModel` erstellen, müssen Sie die Methoden ` rowCount()`, ` columnCount()` und ` data()` implementieren. Standardimplementierungen der Methoden ` index()` und ` parent()` werden von `QAbstractTableModel` bereitgestellt. Gut funktionierende Modelle sollten außerdem die Methode ` headerData()` implementieren.
Bearbeitbare Modelle müssen ` setData()` implementieren und ` flags()` implementieren, um einen Wert zurückzugeben, der ` Qt::ItemIsEditable` enthält.
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, die entsprechenden Funktionen aufzurufen, damit alle verbundenen Ansichten über etwaige Änderungen informiert werden:
- Eine Implementierung von ` insertRows()` muss vor dem Einfügen neuer Zeilen in die Datenstruktur ` beginInsertRows()` aufrufen und unmittelbar danach` endInsertRows()` aufrufen.
- Eine Implementierung von ` insertColumns()` muss vor dem Einfügen neuer Spalten in die Datenstruktur ` beginInsertColumns()` aufrufen und unmittelbar danach` endInsertColumns()` aufrufen.
- Eine Implementierung von ` removeRows()` muss ` beginRemoveRows()` aufrufen, bevor die Zeilen aus der Datenstruktur entfernt werden, und unmittelbar danach` endRemoveRows()` aufrufen.
- Eine Implementierung von ` removeColumns()` muss ` beginRemoveColumns()` aufrufen, bevor die Spalten aus der Datenstruktur entfernt werden, und unmittelbar danach` endRemoveColumns()` aufrufen.
Hinweis: Einige allgemeine Richtlinien zur Erstellung von Modellunterklassen finden Sie in der Referenz zur Modellunterklassenbildung.
Thread-Sicherheit
Da QAbstractTableModel eine Unterklasse von QObject ist, ist es nicht „ thread-safe “. Jede modellbezogene API von QAbstractTableModel sollte nur aus dem Thread aufgerufen werden, in dem sich das Modellobjekt befindet. Wenn QAbstractTableModel 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 Verbindungen mit Warteschlange erfolgen.
Siehe auch Modellklassen, QAbstractItemModel, QAbstractListModel und QRangeModel.
Dokumentation zu Mitgliedsfunktionen
[explicit] QAbstractTableModel::QAbstractTableModel(QObject *parent = nullptr)
Erstellt ein abstraktes Tabellenmodell für die angegebene „ parent “.
[virtual noexcept] QAbstractTableModel::~QAbstractTableModel()
Löscht das abstrakte Tabellenmodell.
[override virtual] bool QAbstractTableModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)
Implementiert: ` QAbstractItemModel::dropMimeData` (const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent).
[override virtual] Qt::ItemFlags QAbstractTableModel::flags(const QModelIndex &index) const
Implementiert neu: ` QAbstractItemModel::flags(const QModelIndex &index) const`.
[override virtual] QModelIndex QAbstractTableModel::index(int row, int column, const QModelIndex &parent = QModelIndex()) const
Umsetzung von: ` QAbstractItemModel::index(int row, int column, const QModelIndex &parent) const`.
Gibt den Index der Daten in ` row ` und ` column ` unter Verwendung von ` parent` zurück.
Siehe auch parent().
[override virtual] QModelIndex QAbstractTableModel::sibling(int row, int column, const QModelIndex &idx) const
Implementiert neu: ` QAbstractItemModel::sibling(int row, int column, const QModelIndex &index) const`.
© 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.