Spec-Zone.ru › Qt 5.14

Класс QAbstractListModel

Класс QAbstractListModel предоставляет абстрактную модель, которую можно наследовать для создания одномерных моделей списков. Подробнее...

Заголовок: #include <QAbstractListModel>
qmake: QT += core
Наследует: QAbstractItemModel
Наследуется от:

QStringListModel

  • Список всех членов, включая унаследованные

Открытые функции

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 и Пример головоломки с элементами представления.

Документация по функциям-членам

[virtual] QAbstractListModel::QAbstractListModel(QObject *parent = nullptr)

Создаёт абстрактную модель списка с заданным parent.

[override 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.14/qabstractlistmodel.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API