Spec-Zone.ru › Qt 5.9

Класс QAbstractListModel

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

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

QStringListModel

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

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

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
  • 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 = 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/qt-5.9/qabstractlistmodel.html

Spec-Zone.ru

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