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: |
Ö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:
- Eine insertRows()-Implementierung muss beginInsertRows() aufrufen , bevor neue Zeilen in die Datenstruktur eingefügt werden, und sie muss endInsertRows() unmittelbar danach aufrufen.
- Eine insertColumns()-Implementierung muss beginInsertColumns() aufrufen , bevor sie neue Spalten in die Datenstruktur einfügt, und sie muss endInsertColumns() unmittelbar danach aufrufen.
- Eine removeRows()-Implementierung muss beginRemoveRows() aufrufen , bevor die Zeilen aus der Datenstruktur entfernt werden, und muss unmittelbar danach endRemoveRows() aufrufen.
- Eine removeColumns()-Implementierung muss beginRemoveColumns() aufrufen , bevor die Spalten aus der Datenstruktur entfernt werden, und sie muss endRemoveColumns() unmittelbar danach aufrufen.
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.