Класс 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 |
- 40 открытых функций, унаследованных от QAbstractItemModel
- 32 открытых функций, унаследованных от QObject
Дополнительные унаследованные члены
- 1 свойство, унаследованное от QObject
- 2 открытых слота, унаследованных от QAbstractItemModel
- 1 открытый слот, унаследованный от QObject
- 18 сигналов, унаследованных от QAbstractItemModel
- 2 сигнала, унаследованных от QObject
- 11 статических открытых членов, унаследованных от QObject
- 19 защищённых функций, унаследованных от QAbstractItemModel
- 9 защищённых функций, унаследованных от QObject
- 1 защищённый слот, унаследованный от QAbstractItemModel
Подробное описание
Класс QAbstractListModel предоставляет абстрактную модель, которую можно наследовать для создания одномерных моделей списков.
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().
[override virtual] Qt::ItemFlags QAbstractListModel::flags(const QModelIndex &index) const
Переопределено из QAbstractItemModel::flags().
[override virtual] QModelIndex QAbstractListModel::index(int row, int column = 0, const QModelIndex &parent = ...) const
Переопределено из QAbstractItemModel::index().
Возвращает индекс данных в row и column с parent.
См. также parent().
[override virtual] QModelIndex QAbstractListModel::sibling(int row, int column, const QModelIndex &idx) const
Переопределено из QAbstractItemModel::sibling().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qabstractlistmodel.html