QAbstractTableModel Class

Die Klasse QAbstractTableModel bietet ein abstraktes Modell, das zur Erstellung von Tabellenmodellen subklassifiziert werden kann. Mehr...

Kopfzeile: #include <QAbstractTableModel>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Vererbt: QAbstractItemModel
Vererbt von:

QSqlQueryModel

Öffentliche Funktionen

QAbstractTableModel(QObject *parent = nullptr)
virtual ~QAbstractTableModel()

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, const QModelIndex &parent = QModelIndex()) const override
virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const override

Detaillierte Beschreibung

QAbstractTableModel bietet eine Standardschnittstelle für Modelle, die ihre Daten als zweidimensionales Array von Elementen darstellen. Sie wird nicht direkt verwendet, sondern muss subclassed werden.

Da das Modell eine spezialisiertere Schnittstelle als QAbstractItemModel bietet, ist es nicht für die Verwendung mit Baumansichten geeignet, obwohl es verwendet werden kann, um Daten für QListView bereitzustellen. Wenn Sie eine einfache Liste von Elementen darstellen müssen und ein Modell nur eine einzelne Datenspalte enthalten soll, ist die Unterklassifizierung 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 nur die Zeilen- und Spaltennummern an.

Unterklassifizierung

Wenn Sie QAbstractTableModel subclassing, müssen Sie rowCount(), columnCount(), und data() implementieren. Standardimplementierungen der Funktionen index() und parent() werden von QAbstractTableModel bereitgestellt. Gut funktionierende Modelle implementieren auch headerData().

Editierbare Modelle müssen setData() implementieren, und flags() implementieren, um einen Wert mit Qt::ItemIsEditable zurückzugeben.

Modelle, die Schnittstellen zu größenveränderlichen Datenstrukturen anbieten, können Implementierungen von insertRows(), removeRows(), insertColumns() und removeColumns() bereitstellen. Bei der Implementierung dieser Funktionen ist es wichtig, die entsprechenden Funktionen aufzurufen, damit alle angeschlossenen Sichten über Änderungen informiert sind:

Hinweis: Einige allgemeine Richtlinien für die Unterklassifizierung von Modellen sind in der Referenz für die Unterklassifizierung von Modellen zu finden.

Thread-Sicherheit

Als Unterklasse von QObject ist QAbstractTableModel nicht thread-safe. Jede modellbezogene API von QAbstractTableModel sollte nur von dem Thread aufgerufen werden, in dem sich das Modellobjekt befindet. Wenn das QAbstractTableModel mit einer Ansicht verbunden ist, bedeutet dies den GUI-Thread, da sich die Ansicht dort befindet und das Modell vom GUI-Thread aus aufgerufen wird. Die Verwendung eines Hintergrund-Threads zum Auffüllen oder Ändern des Inhalts eines Modells ist möglich, erfordert aber Vorsicht, da der Hintergrund-Thread keine modellbezogene API direkt aufrufen kann. Stattdessen sollten Sie die Aktualisierungen in eine Warteschlange stellen und sie im Hauptthread anwenden. Dies kann mit Warteschlangenverbindungen geschehen.

Siehe auch Model Classes, QAbstractItemModel und QAbstractListModel.

Dokumentation der Mitgliedsfunktionen

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

Konstruiert ein abstraktes Tabellenmodell für die angegebene parent.

[virtual noexcept] QAbstractTableModel::~QAbstractTableModel()

Zerstört das abstrakte Tabellenmodell.

[override virtual] bool QAbstractTableModel::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 QAbstractTableModel::flags(const QModelIndex &index) const

Reimplements: QAbstractItemModel::flags(const QModelIndex &index) const.

[override virtual] QModelIndex QAbstractTableModel::index(int row, int column, 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 QAbstractTableModel::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.