Spec-Zone.ru › Qt 6.0

Класс QAbstractListModel

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

Заголовок: #include <QAbstractListModel>
CMake: find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core)
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 = QModelIndex()) 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.

~QAbstractListModel::~QAbstractListModel()

Удаляет абстрактную модель списка.

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).

Qt::ItemFlags QAbstractListModel::flags(const QModelIndex &index) const

Переопределяет: QAbstractItemModel::flags(const QModelIndex &index) const.

QModelIndex QAbstractListModel::index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const

Переопределяет: QAbstractItemModel::index(int row, int column, const QModelIndex &parent) const.

Возвращает индекс данных в row и column с parent.

См. также parent().

QModelIndex QAbstractListModel::sibling(int row, int column, const QModelIndex &idx) const

Переопределяет: QAbstractItemModel::sibling(int row, int column, const QModelIndex &index) const.

Copyright (C) 2018 The Qt Company Ltd.

Spec-Zone.ru

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