Класс QAbstractListModel
Класс QAbstractListModel предоставляет абстрактную модель, которую можно наследовать для создания одномерных моделей списков. Подробнее...
| Заголовок: | #include <QAbstractListModel> |
| qmake: | QT += core |
| Наследуется от: | QAbstractItemModel |
| Наследуется: |
Открытые функции
| QAbstractListModel(QObject *parent = nullptr) | |
| virtual | ~QAbstractListModel() |
Переопределённые открытые функции
| 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 = 0, const QModelIndex &parent = ...) const override |
| virtual QModelIndex | sibling(int row, int column, const QModelIndex &idx) const override |
Подробное описание
QAbstractListModel предоставляет стандартный интерфейс для моделей, представляющих свои данные как простую неиерархическую последовательность элементов. Она не используется непосредственно, а должна быть унаследована.
Поскольку модель предоставляет более специализированный интерфейс, чем QAbstractItemModel, она не подходит для использования с древовидными представлениями; вам нужно будет унаследовать QAbstractItemModel, если вы хотите предоставить модель для этой цели. Если вам нужно использовать несколько моделей списков для управления данными, может быть более целесообразно унаследовать от QAbstractTableModel вместо этого.
Простые модели могут быть созданы путём наследования от этого класса и реализации минимального набора необходимых функций. Например, мы могли бы реализовать простую читательно-только модель, основанную на QStringList, которая предоставляет список строк для виджета QListView. В таком случае нам нужно только реализовать функцию rowCount() для возвращения количества элементов в списке и функцию data() для извлечения элементов из списка.
Поскольку модель представляет одномерную структуру, функция rowCount() возвращает общее количество элементов в модели. Функция columnCount() реализована для совместимости со всеми видами представлений, но по умолчанию сообщает представлениям, что модель содержит только один столбец.
Наследование
При наследовании от QAbstractListModel, вы должны предоставить реализации функций rowCount() и data(). Хорошо спроектированные модели также предоставляют реализацию headerData().
Если ваша модель используется в QML и требует ролей, отличных от стандартных, предоставляемых функцией roleNames(), вы должны переопределить её.
Для моделей списков с возможностью редактирования, вы также должны предоставить реализацию setData(), и реализовать функцию flags(), чтобы она возвращала значение, содержащее Qt::ItemIsEditable.
Обратите внимание, что QAbstractListModel предоставляет реализацию по умолчанию для columnCount(), которая сообщает представлениям, что в этой модели содержится только один столбец элементов.
Модели, предоставляющие интерфейсы для изменения размеров подобных спискам структур данных, могут предоставить реализации insertRows() и removeRows(). При реализации этих функций важно вызывать соответствующие функции, чтобы все подключенные представления были осведомлены об изменениях:
- Реализация insertRows() должна вызывать beginInsertRows() до вставки новых строк в структуру данных, и должна вызвать endInsertRows() немедленно после этого.
- Реализация removeRows() должна вызвать beginRemoveRows() до удаления строк из структуры данных, и должна вызвать endRemoveRows() немедленно после этого.
Примечание: Некоторые общие рекомендации по наследованию от моделей доступны в Справочнике по наследованию от моделей.
См. также Классы моделей, Справочник по наследованию от моделей, QAbstractItemView, QAbstractTableModel и Пример головоломки с элементами представления.
Документация по функциям-членам
QAbstractListModel::QAbstractListModel(QObject *parent = nullptr)
Конструирует абстрактную модель списка с заданным parent.
[virtual] QAbstractListModel::~QAbstractListModel()
Удаляет абстрактную модель списка.
[override virtual] bool QAbstractListModel::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).
[override virtual] Qt::ItemFlags QAbstractListModel::flags(const QModelIndex &index) const
Переопределяет: QAbstractItemModel::flags(const QModelIndex &index) const.
[override virtual] QModelIndex QAbstractListModel::index(int row, int column = 0, const QModelIndex &parent = ...) const
Переопределяет: QAbstractItemModel::index(int row, int column, const QModelIndex &parent) const.
Возвращает индекс данных в строке row и столбце column с parent.
См. также parent().
[override virtual] QModelIndex QAbstractListModel::sibling(int row, int column, const QModelIndex &idx) const
Переопределяет: QAbstractItemModel::sibling(int row, int column, const QModelIndex &index) const.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qabstractlistmodel.html