Auf dieser Seite

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:

QSqlQueryModel

Ö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:

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.