Класс QAbstractListModel
Класс QAbstractListModel предоставляет абстрактную модель, которую можно наследовать для создания одномерных моделей списков. Подробнее...
| Заголовок: | #include <QAbstractListModel> |
| qmake: | QT += core |
| Наследует: | QAbstractItemModel |
| Наследуется от: |
Открытые функции
| QAbstractListModel(QObject *parent = Q_NULLPTR) | |
| ~QAbstractListModel() |
Переопределённые открытые функции
| virtual bool | dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) |
| virtual Qt::ItemFlags | flags(const QModelIndex &index) const |
| virtual QModelIndex | index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const |
| virtual QModelIndex | sibling(int row, int column, const QModelIndex &idx) const |
- 39 открытых функций, унаследованных от QAbstractItemModel
- 31 открытых функций, унаследованных от 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 = Q_NULLPTR)
Конструктор абстрактной модели списка с заданным parent.
QAbstractListModel::~QAbstractListModel()
Деструктор абстрактной модели списка.
[virtual] bool QAbstractListModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)
Переопределено из QAbstractItemModel::dropMimeData().
[virtual] Qt::ItemFlags QAbstractListModel::flags(const QModelIndex &index) const
Переопределено из QAbstractItemModel::flags().
[virtual] QModelIndex QAbstractListModel::index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const
Переопределено из QAbstractItemModel::index().
Возвращает индекс данных в row и column с parent.
См. также parent().
[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.6/qabstractlistmodel.html