Класс QAbstractTableModel
Класс QAbstractTableModel предоставляет абстрактную модель, которую можно наследовать для создания моделей таблиц. Подробнее...
| Заголовок: | #include <QAbstractTableModel> |
| qmake: | QT += core |
| Наследует: | QAbstractItemModel |
Открытые функции
| QAbstractTableModel(QObject *parent = nullptr) | |
| virtual | ~QAbstractTableModel() |
Переопределённые открытые функции
| 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 = ...) const override |
| virtual QModelIndex | sibling(int row, int column, const QModelIndex &idx) const override |
Подробное описание
QAbstractTableModel предоставляет стандартный интерфейс для моделей, которые представляют свои данные как двумерный массив элементов. Она не используется напрямую, но должна быть унаследована.
Поскольку модель предоставляет более специализированный интерфейс, чем QAbstractItemModel, она не подходит для использования с виджетами дерева, хотя её можно использовать для предоставления данных виджету QListView. Если вам нужно представить простой список элементов и вам нужна только модель для хранения одного столбца данных, наследование от QAbstractListModel может быть более подходящим.
Функции rowCount() и columnCount() возвращают размеры таблицы. Для получения индекса модели, соответствующего элементу в модели, используйте index() и укажите только номер строки и столбца.
Наследование
При наследовании от QAbstractTableModel вы должны реализовать rowCount(), columnCount() и data(). QAbstractTableModel предоставляет реализацию по умолчанию для функций index() и parent(). Хорошо написанные модели также реализуют headerData().
Для редактируемых моделей необходимо реализовать setData() и реализовать flags() для возвращения значения, содержащего Qt::ItemIsEditable.
Модели, которые предоставляют интерфейсы для изменения размера данных, могут реализовать insertRows(), removeRows(), insertColumns() и removeColumns(). При реализации этих функций важно вызывать соответствующие функции, чтобы все подключенные представления были осведомлены об изменениях:
- Реализация insertRows() должна вызывать beginInsertRows() до вставки новых строк в структуру данных и вызывать endInsertRows() немедленно после этого.
- Реализация insertColumns() должна вызывать beginInsertColumns() до вставки новых столбцов в структуру данных и вызывать endInsertColumns() немедленно после этого.
- Реализация removeRows() должна вызывать beginRemoveRows() до удаления строк из структуры данных и вызывать endRemoveRows() немедленно после этого.
- Реализация removeColumns() должна вызывать beginRemoveColumns() до удаления столбцов из структуры данных и вызывать endRemoveColumns() немедленно после этого.
Примечание: Некоторые общие рекомендации по наследованию моделей доступны в Справочнике по наследованию моделей.
См. также Классы моделей, QAbstractItemModel, QAbstractListModel и Пример Pixelator.
Документация по функциям-членам
QAbstractTableModel::QAbstractTableModel(QObject *parent = nullptr)
Создаёт абстрактную модель таблицы для данного parent.
~QAbstractTableModel::~QAbstractTableModel()
Удаляет абстрактную модель таблицы.
bool QAbstractTableModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)
Переопределяет: QAbstractItemModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent).
Qt::ItemFlags QAbstractTableModel::flags(const QModelIndex &index) const
Переопределяет: QAbstractItemModel::flags(const QModelIndex &index) const.
QModelIndex QAbstractTableModel::index(int row, int column, const QModelIndex &parent = ...) const
Переопределяет: QAbstractItemModel::index(int row, int column, const QModelIndex &parent) const.
Возвращает индекс данных в row и column с parent.
См. также parent().
QModelIndex QAbstractTableModel::sibling(int row, int column, const QModelIndex &idx) const
Переопределяет: QAbstractItemModel::sibling(int row, int column, const QModelIndex &index) const.