Класс QAbstractItemModel
Класс QAbstractItemModel предоставляет абстрактный интерфейс для классов моделей элементов. Подробнее...
| Заголовок: | #include <QAbstractItemModel> |
| qmake: | QT += core |
| Наследует: | QObject |
| Наследуется от: | QAbstractListModel, QAbstractProxyModel, QAbstractTableModel, QDirModel, QFileSystemModel, QHelpContentModel и QStandardItemModel |
Типы
| Перечисление | LayoutChangeHint { NoLayoutChangeHint, VerticalSortHint, HorizontalSortHint } |
Общедоступные функции
| QAbstractItemModel(QObject *parent = Q_NULLPTR) | |
| virtual | ~QAbstractItemModel() |
| virtual QModelIndex | buddy(const QModelIndex &index) const |
| virtual bool | canDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const |
| virtual bool | canFetchMore(const QModelIndex &parent) const |
| virtual int | columnCount(const QModelIndex &parent = QModelIndex()) const = 0 |
| virtual QVariant | data(const QModelIndex &index, int role = Qt::DisplayRole) const = 0 |
| virtual bool | dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) |
| virtual void | fetchMore(const QModelIndex &parent) |
| virtual Qt::ItemFlags | flags(const QModelIndex &index) const |
| virtual bool | hasChildren(const QModelIndex &parent = QModelIndex()) const |
| bool | hasIndex(int row, int column, const QModelIndex &parent = QModelIndex()) const |
| virtual QVariant | headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const |
| virtual QModelIndex | index(int row, int column, const QModelIndex &parent = QModelIndex()) const = 0 |
| bool | insertColumn(int column, const QModelIndex &parent = QModelIndex()) |
| virtual bool | insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()) |
| bool | insertRow(int row, const QModelIndex &parent = QModelIndex()) |
| virtual bool | insertRows(int row, int count, const QModelIndex &parent = QModelIndex()) |
| virtual QMap<int, QVariant> | itemData(const QModelIndex &index) const |
| virtual QModelIndexList | match(const QModelIndex &start, int role, const QVariant &value, int hits = 1, Qt::MatchFlags flags = Qt::MatchFlags( Qt::MatchStartsWith | Qt::MatchWrap )) const |
| virtual QMimeData * | mimeData(const QModelIndexList &indexes) const |
| virtual QStringList | mimeTypes() const |
| bool | moveColumn(const QModelIndex &sourceParent, int sourceColumn, const QModelIndex &destinationParent, int destinationChild) |
| virtual bool | moveColumns(const QModelIndex &sourceParent, int sourceColumn, int count, const QModelIndex &destinationParent, int destinationChild) |
| bool | moveRow(const QModelIndex &sourceParent, int sourceRow, const QModelIndex &destinationParent, int destinationChild) |
| virtual bool | moveRows(const QModelIndex &sourceParent, int sourceRow, int count, const QModelIndex &destinationParent, int destinationChild) |
| virtual QModelIndex | parent(const QModelIndex &index) const = 0 |
| bool | removeColumn(int column, const QModelIndex &parent = QModelIndex()) |
| virtual bool | removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()) |
| bool | removeRow(int row, const QModelIndex &parent = QModelIndex()) |
| virtual bool | removeRows(int row, int count, const QModelIndex &parent = QModelIndex()) |
| virtual QHash<int, QByteArray> | roleNames() const |
| virtual int | rowCount(const QModelIndex &parent = QModelIndex()) const = 0 |
| virtual bool | setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) |
| virtual bool | setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole) |
| virtual bool | setItemData(const QModelIndex &index, const QMap<int, QVariant> &roles) |
| virtual QModelIndex | sibling(int row, int column, const QModelIndex &index) const |
| virtual void | sort(int column, Qt::SortOrder order = Qt::AscendingOrder) |
| virtual QSize | span(const QModelIndex &index) const |
| virtual Qt::DropActions | supportedDragActions() const |
| virtual Qt::DropActions | supportedDropActions() const |
- 32 public functions inherited from QObject
Public Slots
| virtual void | revert() |
| virtual bool | submit() |
- 1 public slot inherited from QObject
Сигналы
| void | columnsAboutToBeInserted(const QModelIndex &parent, int first, int last) |
| void | columnsAboutToBeMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationColumn) |
| void | columnsAboutToBeRemoved(const QModelIndex &parent, int first, int last) |
| void | columnsInserted(const QModelIndex &parent, int first, int last) |
| void | columnsMoved(const QModelIndex &parent, int start, int end, const QModelIndex &destination, int column) |
| void | columnsRemoved(const QModelIndex &parent, int first, int last) |
| void | dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector<int> &roles = QVector<int> ()) |
| void | headerDataChanged(Qt::Orientation orientation, int first, int last) |
| void | layoutAboutToBeChanged(const QList<QPersistentModelIndex> &parents = QList<QPersistentModelIndex> (), QAbstractItemModel::LayoutChangeHint hint = QAbstractItemModel::NoLayoutChangeHint) |
| void | layoutChanged(const QList<QPersistentModelIndex> &parents = QList<QPersistentModelIndex> (), QAbstractItemModel::LayoutChangeHint hint = QAbstractItemModel::NoLayoutChangeHint) |
| void | modelAboutToBeReset() |
| void | modelReset() |
| void | rowsAboutToBeInserted(const QModelIndex &parent, int start, int end) |
| void | rowsAboutToBeMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationRow) |
| void | rowsAboutToBeRemoved(const QModelIndex &parent, int first, int last) |
| void | rowsInserted(const QModelIndex &parent, int first, int last) |
| void | rowsMoved(const QModelIndex &parent, int start, int end, const QModelIndex &destination, int row) |
| void | rowsRemoved(const QModelIndex &parent, int first, int last) |
- 2 сигнала унаследованы от QObject
Защищенные функции
| void | beginInsertColumns(const QModelIndex &parent, int first, int last) |
| void | beginInsertRows(const QModelIndex &parent, int first, int last) |
| bool | beginMoveColumns(const QModelIndex &sourceParent, int sourceFirst, int sourceLast, const QModelIndex &destinationParent, int destinationChild) |
| bool | beginMoveRows(const QModelIndex &sourceParent, int sourceFirst, int sourceLast, const QModelIndex &destinationParent, int destinationChild) |
| void | beginRemoveColumns(const QModelIndex &parent, int first, int last) |
| void | beginRemoveRows(const QModelIndex &parent, int first, int last) |
| void | beginResetModel() |
| void | changePersistentIndex(const QModelIndex &from, const QModelIndex &to) |
| void | changePersistentIndexList(const QModelIndexList &from, const QModelIndexList &to) |
| QModelIndex | createIndex(int row, int column, void *ptr = Q_NULLPTR) const |
| QModelIndex | createIndex(int row, int column, quintptr id) const |
| void | endInsertColumns() |
| void | endInsertRows() |
| void | endMoveColumns() |
| void | endMoveRows() |
| void | endRemoveColumns() |
| void | endRemoveRows() |
| void | endResetModel() |
| QModelIndexList | persistentIndexList() const |
- 9 защищенных функций унаследованы от QObject
Защищенные слоты
| void | resetInternalData() |
Дополнительные унаследованные члены
Подробное описание
Класс QAbstractItemModel предоставляет абстрактный интерфейс для классов моделей элементов.
Класс QAbstractItemModel определяет стандартный интерфейс, который должны использовать модели элементов, чтобы иметь возможность взаимодействовать с другими компонентами в архитектуре модель/представление. Он не должен создаваться напрямую. Вместо этого вы должны создать его подкласс, чтобы создать новые модели.
Класс QAbstractItemModel является одним из Классов модели/представления и входит в фреймворк Qt для модели/представления. Он может использоваться в качестве базовой модели данных для элементов представления элементов в QML или классах представления элементов в модуле Qt Widgets.
Если вам нужна модель для использования с элементом представления элементов, таким как элемент List View QML или виджеты C++ QListView или QTableView, вы должны рассмотреть возможность создания подкласса QAbstractListModel или QAbstractTableModel вместо этого класса.
Базовая модель данных отображается для представлений и делегатов как иерархия таблиц. Если вы не используете иерархию, то модель представляет собой простую таблицу строк и столбцов. Каждый элемент имеет уникальный индекс, заданный QModelIndex.
Каждый элемент данных, к которому можно получить доступ через модель, имеет связанный с ним индекс модели. Этот индекс модели можно получить с помощью функции index(). Каждый индекс может иметь индекс sibling(); индексы дочерних элементов имеют индекс parent().
Каждый элемент имеет ряд элементов данных, связанных с ним, и их можно получить, указав роль (см. Qt::ItemDataRole) в функции data() модели. Данные для всех доступных ролей можно получить одновременно с помощью функции itemData().
Данные для каждой роли устанавливаются с помощью определенной роли Qt::ItemDataRole. Данные для отдельных ролей устанавливаются индивидуально с помощью setData(), или они могут быть установлены для всех ролей с помощью setItemData().
Элементы могут быть запрошены с помощью flags() (см. Qt::ItemFlag), чтобы определить, могут ли они быть выбраны, перетащены или изменены другими способами.
Если элемент имеет дочерние объекты, функция hasChildren() возвращает true для соответствующего индекса.
Модель имеет rowCount() и columnCount() для каждого уровня иерархии. Строки и столбцы могут быть вставлены и удалены с помощью insertRows(), insertColumns(), removeRows() и removeColumns().
Модель излучает сигналы для индикации изменений. Например, dataChanged() излучается всякий раз, когда изменяются элементы данных, предоставляемые моделью. Изменения заголовков, предоставленных моделью, вызывают излучение сигнала headerDataChanged(). Если структура базовых данных меняется, модель может излучить layoutChanged(), чтобы сообщить всем подключенным представлениям, что они должны повторно отобразить все отображенные элементы, учитывая новую структуру.
Элементы, доступные через модель, могут быть проверены на наличие определённых данных с помощью функции match().
Для сортировки модели можно использовать sort().
Наследование
Примечание: Некоторые общие рекомендации по наследованию моделей доступны в Справочнике по наследованию моделей.
При наследовании от QAbstractItemModel, как минимум, необходимо реализовать index(), parent(), rowCount(), columnCount() и data(). Эти функции используются во всех моделях только для чтения и составляют основу для редактируемых моделей.
Также можно переопределить hasChildren(), чтобы обеспечить специальное поведение для моделей, где реализация rowCount() является дорогостоящей. Это позволяет моделям ограничивать количество данных, запрашиваемых представлениями, и может использоваться для реализации ленивой загрузки данных модели.
Чтобы включить редактирование в вашей модели, также необходимо реализовать setData() и переопределить flags(), чтобы убедиться, что ItemIsEditable возвращается. Также можно переопределить headerData() и setHeaderData(), чтобы контролировать способ представления заголовков вашей модели.
Сигналы dataChanged() и headerDataChanged() должны быть явно излучены при переопределении функций setData() и setHeaderData() соответственно.
Пользовательские модели должны создавать индексы модели для других компонентов. Для этого вызовите createIndex() с соответствующими номерами строки и столбца для элемента и идентификатором для него, как указателем, так и целым значением. Сочетание этих значений должно быть уникальным для каждого элемента. Пользовательские модели обычно используют эти уникальные идентификаторы в других переопределённых функциях для извлечения данных элементов и доступа к информации об их родителях и детях. Дополнительную информацию об уникальных идентификаторах см. в примере Simple Tree Model Example.
Необязательно поддерживать каждую роль, определённую в Qt::ItemDataRole. В зависимости от типа данных, содержащихся в модели, может быть полезно реализовать функцию data() только для возвращения корректной информации для некоторых наиболее распространённых ролей. Большинство моделей предоставляют, по крайней мере, текстовое представление данных элемента для Qt::DisplayRole, и хорошо спроектированные модели также должны предоставлять корректную информацию для Qt::ToolTipRole и Qt::WhatsThisRole. Поддержка этих ролей позволяет использовать модели с стандартными представлениями Qt. Однако для некоторых моделей, обрабатывающих высокоспециализированные данные, может быть уместно предоставлять данные только для определённых пользователем ролей.
Модели, предоставляющие интерфейсы к изменяемым структурам данных, могут предоставить реализации функций insertRows(), removeRows(), insertColumns() и removeColumns(). При реализации этих функций важно уведомить подключённые представления об изменениях размеров модели как до, так и после их возникновения:
- Реализация insertRows() должна вызвать beginInsertRows() до вставки новых строк в структуру данных и endInsertRows() немедленно после этого.
- Реализация insertColumns() должна вызвать beginInsertColumns() до вставки новых столбцов в структуру данных и endInsertColumns() немедленно после этого.
- Реализация removeRows() должна вызвать beginRemoveRows() до удаления строк из структуры данных и endRemoveRows() немедленно после этого.
- Реализация removeColumns() должна вызвать beginRemoveColumns() до удаления столбцов из структуры данных и endRemoveColumns() немедленно после этого.
Приватные сигналы, которые излучают эти функции, дают подключённым компонентам возможность предпринять действия до того, как любые данные станут недоступными. Использование этих функций begin и end также позволяет модели правильно управлять постоянными индексами модели. Для правильной обработки выделений необходимо гарантировать вызов этих функций. Если вы вставляете или удаляете элемент с дочерними элементами, вызывать эти функции для дочерних элементов не нужно. Другими словами, родительский элемент позаботится о своих дочерних элементах.
Для создания моделей, которые загружаются постепенно, можно переопределить fetchMore() и canFetchMore(). Если переопределение fetchMore() добавляет строки в модель, необходимо вызвать beginInsertRows() и endInsertRows().
См. также Классы моделей, Справочник по наследованию моделей, QModelIndex, QAbstractItemView, Использование перетаскивания с представлениями элементов, Simple DOM Model Example, Simple Tree Model Example, Editable Tree Model Example и Fetch More Example.
Документация по типам членов
перечисление QAbstractItemModel::LayoutChangeHint
Это перечисление описывает способ изменения макета модели.
| Константа | Значение | Описание |
|---|---|---|
QAbstractItemModel::NoLayoutChangeHint |
0 |
Нет доступного подсказки. |
QAbstractItemModel::VerticalSortHint |
1 |
Сортируются строки. |
QAbstractItemModel::HorizontalSortHint |
2 |
Сортируются столбцы. |
Обратите внимание, что VerticalSortHint и HorizontalSortHint означают, что элементы перемещаются в пределах одного родителя, а не перемещаются к другому родителю в модели, и не отфильтровываются или добавляются.
Документация по функциям-членам
QAbstractItemModel::QAbstractItemModel(QObject *parent = Q_NULLPTR)
Конструктор абстрактной модели элементов с заданным parent.
[virtual] QAbstractItemModel::~QAbstractItemModel()
Деструктор абстрактной модели элементов.
[protected] void QAbstractItemModel::beginInsertColumns(const QModelIndex &parent, int first, int last)
Начинает операцию вставки столбцов.
При переопределении insertColumns() в подклассе необходимо вызвать эту функцию перед вставкой данных в базу данных модели.
Индекс parent соответствует родительскому элементу, в который вставляются новые столбцы; first и last — номера столбцов новых столбцов после их вставки.
| Укажите начальный и конечный номера столбцов для вставки диапазона столбцов в элемент модели. Например, как показано на диаграмме, мы вставляем три столбца перед столбцом 4, поэтому first равен 4, а last — 6: beginInsertColumns(parent, 4, 6); Это вставит три новых столбца как столбцы 4, 5 и 6. |
|
| Чтобы добавить столбцы, вставьте их после последнего столбца. Например, как показано на диаграмме, мы добавляем три столбца к набору из шести существующих столбцов (заканчивающихся столбцом 5), поэтому first равен 6, а last — 8: beginInsertColumns(parent, 6, 8); Это добавляет два новых столбца как столбцы 6, 7 и 8. |
Примечание: Эта функция излучает сигнал columnsAboutToBeInserted(), который подключенные представления (или прокси) должны обработать перед вставкой данных. В противном случае представления могут оказаться в недопустимом состоянии.
См. также endInsertColumns().
[protected] void QAbstractItemModel::beginInsertRows(const QModelIndex &parent, int first, int last)
Начинает операцию вставки строк.
При переопределении insertRows() в подклассе вы должны вызвать эту функцию перед вставкой данных в базу данных модели.
Индекс parent соответствует родительскому элементу, в который вставляются новые строки; first и last — номера строк новых строк после их вставки.
| Укажите начальный и конечный номера строк для вставки диапазона строк в элемент модели. Например, как показано на диаграмме, мы вставляем три строки перед строкой 2, поэтому first равен 2, а last — 4: beginInsertRows(parent, 2, 4); Это вставит три новых строки как строки 2, 3 и 4. |
|
| Чтобы добавить строки, вставьте их после последней строки. Например, как показано на диаграмме, мы добавляем две строки к набору из 4 существующих строк (заканчивающихся строкой 3), поэтому first равен 4, а last — 5: beginInsertRows(parent, 4, 5); Это добавляет две новых строки как строки 4 и 5. |
Примечание: Эта функция излучает сигнал rowsAboutToBeInserted(), который подключенные представления (или прокси) должны обработать перед вставкой данных. В противном случае представления могут оказаться в недопустимом состоянии.
См. также endInsertRows().
[protected] bool QAbstractItemModel::beginMoveColumns(const QModelIndex &sourceParent, int sourceFirst, int sourceLast, const QModelIndex &destinationParent, int destinationChild)
Начинает операцию перемещения столбцов.
При переопределении в подклассе этот метод упрощает перемещение элементов в вашей модели. Этот метод отвечает за перемещение постоянных индексов в модели, что вам в противном случае пришлось бы делать самостоятельно. Использование beginMoveColumns и endMoveColumns — альтернатива прямому излучению layoutAboutToBeChanged и layoutChanged вместе с changePersistentIndex.
Индекс sourceParent соответствует родительскому элементу, из которого перемещаются столбцы; sourceFirst и sourceLast — номера первого и последнего столбца перемещаемых столбцов. Индекс destinationParent соответствует родительскому элементу, в который перемещаются столбцы. destinationChild — столбец, в который перемещаются столбцы. То есть индекс в столбце sourceFirst в sourceParent станет столбцом destinationChild в destinationParent, за которым следуют все остальные столбцы до sourceLast.
Однако при перемещении столбцов вниз в том же родительском элементе (sourceParent и destinationParent равны), столбцы будут размещены перед индексом destinationChild. То есть, если вы хотите переместить столбцы 0 и 1, чтобы они стали столбцами 1 и 2, destinationChild должен быть 3. В этом случае новый индекс для исходного столбца i (который находится между sourceFirst и sourceLast) равен (destinationChild-sourceLast-1+i).
Обратите внимание, что если sourceParent и destinationParent одинаковы, вы должны убедиться, что destinationChild не находится в диапазоне от sourceFirst до sourceLast + 1. Вы также должны убедиться, что не пытаетесь переместить столбец в одного из своих потомков или предков. Этот метод возвращает false, если одно из этих условий выполняется, в этом случае вы должны прервать операцию перемещения.
Эта функция была добавлена в Qt 4.6.
См. также endMoveColumns().
[protected] bool QAbstractItemModel::beginMoveRows(const QModelIndex &sourceParent, int sourceFirst, int sourceLast, const QModelIndex &destinationParent, int destinationChild)
Начинает операцию перемещения строк.
При переопределении в подклассе этот метод упрощает перемещение элементов в вашей модели. Этот метод отвечает за перемещение постоянных индексов в модели, что вам в противном случае пришлось бы делать самостоятельно. Использование beginMoveRows и endMoveRows — альтернатива прямому излучению layoutAboutToBeChanged и layoutChanged вместе с changePersistentIndex.
Индекс sourceParent соответствует родительскому элементу, из которого перемещаются строки; sourceFirst и sourceLast — номера первой и последней строки перемещаемых строк. Индекс destinationParent соответствует родительскому элементу, в который перемещаются строки. destinationChild — строка, в которую перемещаются строки. То есть индекс в строке sourceFirst в sourceParent станет строкой destinationChild в destinationParent, за которым следуют все остальные строки до sourceLast.
Однако при перемещении строк вниз в том же родительском элементе (sourceParent и destinationParent равны), строки будут размещены перед индексом destinationChild. То есть, если вы хотите переместить строки 0 и 1, чтобы они стали строками 1 и 2, destinationChild должен быть 3. В этом случае новый индекс для исходной строки i (которая находится между sourceFirst и sourceLast) равен (destinationChild-sourceLast-1+i).
Обратите внимание, что если sourceParent и destinationParent одинаковы, вы должны убедиться, что destinationChild не находится в диапазоне от sourceFirst до sourceLast + 1. Вы также должны убедиться, что не пытаетесь переместить строку в одного из своих потомков или предков. Этот метод возвращает false, если одно из этих условий выполняется, в этом случае вы должны прервать операцию перемещения.
| Укажите начальный и конечный номера строк для диапазона строк в родительском элементе источника, которые вы хотите переместить в модели. Также укажите строку в родительском элементе назначения для перемещения диапазона. Например, как показано на диаграмме, мы перемещаем три строки из строки 2 в 4 в источнике, поэтому sourceFirst равен 2, а sourceLast равен 4. Мы перемещаем эти элементы выше строки 2 в назначении, поэтому destinationChild равен 2. beginMoveRows(sourceParent, 2, 4, destinationParent, 2); Это перемещает три строки 2, 3 и 4 в источнике, чтобы они стали 2, 3 и 4 в назначении. Другие затронутые элементы смещаются соответственно. |
|
| Чтобы добавить строки к другому родительскому элементу, переместите их после последней строки. Например, как показано на диаграмме, мы перемещаем три строки в набор из 6 существующих строк (заканчивающихся строкой 5), поэтому destinationChild равен 6: beginMoveRows(sourceParent, 2, 4, destinationParent, 6); Это перемещает целевые строки в конец целевого родительского элемента как 6, 7 и 8. |
|
| Чтобы переместить строки в рамках одного и того же родительского элемента, укажите строку, в которую их нужно переместить. Например, как показано на диаграмме, мы перемещаем один элемент из строки 2 в строку 0, поэтому sourceFirst и sourceLast равны 2, а destinationChild равен 0. beginMoveRows(parent, 2, 2, parent, 0); Обратите внимание, что другие строки могут сместиться соответственно. Также обратите внимание, что при перемещении элементов в рамках одного родителя не следует пытаться выполнять недействительные или бесполезные перемещения. В приведенном выше примере элемент 2 находится в строке 2 до перемещения, поэтому его нельзя переместить в строку 2 (где он уже есть) или строку 3 (бесполезное действие, так как строка 3 означает выше строки 3, где он уже есть). |
|
| Чтобы переместить строки в рамках одного и того же родительского элемента, укажите строку, в которую их нужно переместить. Например, как показано на диаграмме, мы перемещаем один элемент из строки 2 в строку 4, поэтому sourceFirst и sourceLast равны 2, а destinationChild равен 4. beginMoveRows(parent, 2, 2, parent, 4); Обратите внимание, что другие строки могут сместиться соответственно. |
Эта функция была добавлена в Qt 4.6.
См. также endMoveRows().
[protected] void QAbstractItemModel::beginRemoveColumns(const QModelIndex &parent, int first, int last)
Начинает операцию удаления столбцов.
При переопределении removeColumns() в подклассе вы должны вызвать эту функцию перед удалением данных из базы данных модели.
Индекс parent соответствует родительскому элементу, из которого удаляются новые столбцы; first и last — номера первого и последнего столбцов, которые будут удалены.
| Укажите номера первой и последней колонки для диапазона столбцов, которые вы хотите удалить из элемента в модели. Например, как показано на диаграмме, мы удаляем три колонки со столбца 4 до столбца 6, поэтому first равен 4, а last равен 6: beginRemoveColumns(parent, 4, 6); |
Примечание: Эта функция испускает сигнал columnsAboutToBeRemoved(), который подключенные представления (или прокси) должны обработать перед удалением данных. В противном случае представления могут оказаться в недопустимом состоянии.
См. также endRemoveColumns().
[protected] void QAbstractItemModel::beginRemoveRows(const QModelIndex &parent, int first, int last)
Начинает операцию удаления строк.
При переопределении removeRows() в подклассе вы должны вызвать эту функцию перед удалением данных из базового хранилища данных модели.
Индекс parent соответствует родителю, из которого удаляются новые строки; first и last — номера строк, которые будут удалены.
| Укажите номера первой и последней строки для диапазона строк, которые вы хотите удалить из элемента в модели. Например, как показано на диаграмме, мы удаляем две строки со строки 2 до строки 3, поэтому first равен 2, а last равен 3: beginRemoveRows(parent, 2, 3); |
Примечание: Эта функция испускает сигнал rowsAboutToBeRemoved(), который подключенные представления (или прокси) должны обработать перед удалением данных. В противном случае представления могут оказаться в недопустимом состоянии.
См. также endRemoveRows().
[protected] void QAbstractItemModel::beginResetModel()
Начинает операцию сброса модели.
Операция сброса сбрасывает модель до её текущего состояния во всех присоединённых представлениях.
Примечание: Любые представления, присоединённые к этой модели, также будут сброшены.
Когда модель сбрасывается, это означает, что любые предыдущие данные, полученные от модели, теперь недействительны и должны быть запрошены заново. Это также означает, что текущий элемент и любые выбранные элементы станут недействительными.
Когда модель кардинально изменяет свои данные, иногда проще вызвать эту функцию, чем испускать dataChanged(), чтобы оповестить другие компоненты, когда изменился базовый источник данных или его структура.
Вы должны вызвать эту функцию перед сбросом каких-либо внутренних структур данных в вашей модели или прокси-модели.
Эта функция испускает сигнал modelAboutToBeReset().
Эта функция была введена в Qt 4.6.
См. также modelAboutToBeReset(), modelReset() и endResetModel().
[virtual] QModelIndex QAbstractItemModel::buddy(const QModelIndex &index) const
Возвращает индекс модели для «партнёра» элемента, представленного индексом index. Когда пользователь хочет отредактировать элемент, представление вызовет эту функцию, чтобы проверить, следует ли вместо этого редактировать другой элемент в модели. Затем представление создаст делегат, используя индекс модели, возвращённый элементом-«партнёром».
По умолчанию эта функция рассматривает каждый элемент как своего «партнёра».
[virtual] bool QAbstractItemModel::canDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const
Возвращает true, если модель может принять сброс данных data. Эта функция по умолчанию проверяет, содержит ли data хотя бы один формат в списке mimeTypes(), и если action входит в список supportedDropActions() модели.
Переопределите эту функцию в своей кастомной модели, если хотите проверить, могут ли данные data быть сброшены в строку row, столбец column, родитель parent с действием action. Если вам эта проверка не нужна, переопределять функцию необязательно.
См. также dropMimeData() и Использование перетаскивания и перемещения с представлениями элементов.
[virtual] bool QAbstractItemModel::canFetchMore(const QModelIndex &parent) const
Возвращает true, если для parent доступны дополнительные данные; в противном случае возвращает false.
Реализация по умолчанию всегда возвращает false.
Если canFetchMore() возвращает true, функция fetchMore() должна быть вызвана. Это поведение, например, QAbstractItemView.
См. также fetchMore().
[protected] void QAbstractItemModel::changePersistentIndex(const QModelIndex &from, const QModelIndex &to)
Изменяет QPersistentModelIndex, равный заданному индексу модели from, на заданный индекс модели to.
Если не был найден постоянный индекс модели, равный заданному индексу модели from, ничего не меняется.
См. также persistentIndexList() и changePersistentIndexList().
[protected] void QAbstractItemModel::changePersistentIndexList(const QModelIndexList &from, const QModelIndexList &to)
Изменяет QPersistentModelIndexи, равные индексам в списке индексов модели from, на список индексов модели to.
Если не были найдены постоянные индексы модели, равные индексам в заданном списке индексов модели from, ничего не меняется.
Эта функция была введена в Qt 4.1.
См. также persistentIndexList() и changePersistentIndex().
[pure virtual] int QAbstractItemModel::columnCount(const QModelIndex &parent = QModelIndex()) const
Возвращает количество столбцов для дочерних элементов заданного родителя parent.
В большинстве подклассов количество столбцов не зависит от parent.
Например:
int DomModel::columnCount(const QModelIndex &/*parent*/) const
{
return 3;
} Примечание: При реализации модели на основе таблицы columnCount() должно возвращать 0, когда родитель действителен.
См. также rowCount().
[signal] void QAbstractItemModel::columnsAboutToBeInserted(const QModelIndex &parent, int first, int last)
Этот сигнал испускается непосредственно перед вставкой столбцов в модель. Новые элементы будут размещены между first и last включительно, под заданным элементом parent.
Примечание: Компоненты, подключённые к этому сигналу, используют его для адаптации к изменениям в размерах модели. Он может испускаться только реализацией QAbstractItemModel, и его нельзя явно испускать в коде подкласса.
Примечание: Это частный сигнал. Его можно использовать в подключениях сигналов, но он не может испускаться пользователем.
См. также insertColumns() и beginInsertColumns().
[signal] void QAbstractItemModel::columnsAboutToBeMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationColumn)
Этот сигнал испускается непосредственно перед перемещением столбцов в модели. Элементы, которые будут перемещены, находятся между sourceStart и sourceEnd включительно, под заданным элементом sourceParent. Они будут перемещены в destinationParent, начиная со столбца destinationColumn.
Примечание: Компоненты, подключенные к этому сигналу, используют его для адаптации к изменениям в размерах модели. Он может испускаться только реализацией QAbstractItemModel, и его нельзя явно испускать в коде подкласса.
Эта функция была введена в Qt 4.6.
Примечание: Это частный сигнал. Его можно использовать в подключениях сигналов, но он не может испускаться пользователем.
См. также beginMoveRows().
[signal] void QAbstractItemModel::columnsAboutToBeRemoved(const QModelIndex &parent, int first, int last)
Этот сигнал испускается непосредственно перед удалением столбцов из модели. Элементы, которые будут удалены, находятся между first и last включительно, под заданным элементом parent.
Примечание: Компоненты, подключенные к этому сигналу, используют его для адаптации к изменениям в размерах модели. Он может испускаться только реализацией QAbstractItemModel, и его нельзя явно испускать в коде подкласса.
Примечание: Это частный сигнал. Его можно использовать в соединениях сигналов, но он не может быть испущен пользователем.
См. также removeColumns() и beginRemoveColumns().
[signal] void QAbstractItemModel::columnsInserted(const QModelIndex &parent, int first, int last)
Этот сигнал испускается после вставки столбцов в модель. Новые элементы находятся между first и last включительно, под заданным элементом parent.
Примечание: Компоненты, подключённые к этому сигналу, используют его для адаптации к изменениям размеров модели. Он может быть испущен только реализацией QAbstractItemModel, и его нельзя явно испускать в коде подклассов.
Примечание: Это частный сигнал. Его можно использовать в соединениях сигналов, но он не может быть испущен пользователем.
См. также insertColumns() и beginInsertColumns().
[signal] void QAbstractItemModel::columnsMoved(const QModelIndex &parent, int start, int end, const QModelIndex &destination, int column)
Этот сигнал испускается после перемещения столбцов в модели. Элементы между start и end включительно, под заданным элементом parent, были перемещены в destination, начиная со столбца column.
Примечание: Компоненты, подключенные к этому сигналу, используют его для адаптации к изменениям размеров модели. Он может быть испущен только реализацией QAbstractItemModel, и его нельзя явно испускать в коде подклассов.
Эта функция была добавлена в Qt 4.6.
Примечание: Это частный сигнал. Его можно использовать в соединениях сигналов, но он не может быть испущен пользователем.
См. также beginMoveRows().
[signal] void QAbstractItemModel::columnsRemoved(const QModelIndex &parent, int first, int last)
Этот сигнал испускается после удаления столбцов из модели. Удаленные элементы находятся между first и last включительно, под заданным элементом parent.
Примечание: Компоненты, подключённые к этому сигналу, используют его для адаптации к изменениям размеров модели. Он может быть испущен только реализацией QAbstractItemModel, и его нельзя явно испускать в коде подклассов.
Примечание: Это частный сигнал. Его можно использовать в соединениях сигналов, но он не может быть испущен пользователем.
См. также removeColumns() и beginRemoveColumns().
[protected] QModelIndex QAbstractItemModel::createIndex(int row, int column, void *ptr = Q_NULLPTR) const
Создаёт индекс модели для заданной строки row и столбца column с внутренним указателем ptr.
При использовании QSortFilterProxyModel, его индексы имеют собственный внутренний указатель. Не рекомендуется обращаться к этому внутреннему указателю вне модели. Используйте функцию data() вместо этого.
Данная функция предоставляет согласованный интерфейс, который подклассы моделей должны использовать для создания индексов модели.
[protected] QModelIndex QAbstractItemModel::createIndex(int row, int column, quintptr id) const
Создаёт индекс модели для заданной строки row и столбца column с внутренним идентификатором id.
Данная функция предоставляет согласованный интерфейс, который подклассы моделей должны использовать для создания индексов модели.
См. также QModelIndex::internalId().
[pure virtual] QVariant QAbstractItemModel::data(const QModelIndex &index, int role = Qt::DisplayRole) const
Возвращает данные, хранящиеся под заданным role для элемента, на который ссылается index.
Примечание: Если возвращаемого значения нет, верните недействительный QVariant вместо 0.
См. также Qt::ItemDataRole, setData() и headerData().
[signal] void QAbstractItemModel::dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector<int> &roles = QVector<int> ())
Этот сигнал испускается всякий раз, когда данные в существующем элементе изменяются.
Если элементы имеют одного родителя, то затронутые элементы находятся между topLeft и bottomRight включительно. Если у элементов нет одного родителя, поведение не определено.
При переопределении функции setData() этот сигнал необходимо явно испустить.
Необязательный аргумент roles может использоваться для указания, какие роли данных фактически были изменены. Пустой вектор в аргументе roles означает, что все роли должны рассматриваться как изменённые. Порядок элементов в аргументе roles не имеет значения.
См. также headerDataChanged(), setData() и layoutChanged().
[virtual] bool QAbstractItemModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)
Обрабатывает data, предоставленные операцией перетаскивания, которая завершилась заданным действием action.
Возвращает true если данные и действие были обработаны моделью; в противном случае возвращает false.
Указанные row, column и parent указывают расположение элемента в модели, где завершилась операция. Модель должна выполнить действие в правильном месте.
Например, действие перетаскивания на элемент в QTreeView может привести к вставке новых элементов либо как потомков элемента, указанного row, column и parent, либо как братьев элемента.
Если row и column равны -1, это означает, что перетаскиваемые данные должны рассматриваться как перетащенные непосредственно на parent. Обычно это означает добавление данных в качестве дочерних элементов parent. Если row и column больше или равны нулю, это означает, что перетаскивание произошло непосредственно перед указанной row и column в указанном parent.
Член mimeTypes() вызывается для получения списка допустимых типов MIME. Эта реализация по умолчанию предполагает реализацию по умолчанию для mimeTypes(), которая возвращает единственный тип MIME по умолчанию. Если вы переопределите mimeTypes() в своей пользовательской модели, чтобы вернуть несколько типов MIME, вы должны переопределить эту функцию, чтобы использовать их.
См. также supportedDropActions(), canDropMimeData() и Использование перетаскивания с элементами представления.
[protected] void QAbstractItemModel::endInsertColumns()
Завершает операцию вставки столбцов.
При переопределении insertColumns() в подклассе необходимо вызвать эту функцию после вставки данных в базовый хранилище данных модели.
См. также beginInsertColumns().
[protected] void QAbstractItemModel::endInsertRows()
Завершает операцию вставки строк.
При переопределении insertRows() в подклассе необходимо вызвать эту функцию после вставки данных в базовый хранилище данных модели.
См. также beginInsertRows().
[protected] void QAbstractItemModel::endMoveColumns()
Завершает операцию перемещения столбцов.
При реализации подкласса необходимо вызвать эту функцию после перемещения данных в базовом хранилище данных модели.
Эта функция была добавлена в Qt 4.6.
См. также beginMoveColumns().
[protected] void QAbstractItemModel::endMoveRows()
Завершает операцию перемещения строк.
При реализации подкласса необходимо вызвать эту функцию после перемещения данных в базовом хранилище данных модели.
Эта функция была добавлена в Qt 4.6.
См. также beginMoveRows().
[protected] void QAbstractItemModel::endRemoveColumns()
Завершает операцию удаления столбцов.
При переопределении removeColumns() в подклассе необходимо вызвать эту функцию после удаления данных из базового хранилища данных модели.
См. также beginRemoveColumns().
END_OF_DOCUMENT_MARKER
[protected] void QAbstractItemModel::endRemoveRows()
Завершает операцию удаления строк.
При переопределении метода removeRows() в подклассе необходимо вызвать эту функцию после удаления данных из базового хранилища данных модели.
См. также beginRemoveRows().
[protected] void QAbstractItemModel::endResetModel()
Завершает операцию сброса модели.
Необходимо вызвать эту функцию после сброса любой внутренней структуры данных в вашей модели или прокси-модели.
Эта функция испускает сигнал modelReset().
Эта функция была добавлена в Qt 4.6.
См. также beginResetModel().
[virtual] void QAbstractItemModel::fetchMore(const QModelIndex &parent)
Загружает все доступные данные для элементов с указанным родительским индексом parent.
Переопределите этот метод, если вы заполняете свою модель по частям.
По умолчанию ничего не делает.
См. также canFetchMore().
[virtual] Qt::ItemFlags QAbstractItemModel::flags(const QModelIndex &index) const
Возвращает флаги элемента для данного индекса index.
Реализация базового класса возвращает комбинацию флагов, которая позволяет использовать элемент (ItemIsEnabled) и позволяет его выбирать (ItemIsSelectable).
См. также Qt::ItemFlags.
[virtual] bool QAbstractItemModel::hasChildren(const QModelIndex &parent = QModelIndex()) const
Возвращает true если у parent есть дочерние элементы; в противном случае возвращает false.
Используйте rowCount() на родителе для получения количества дочерних элементов.
Обратите внимание, что поведение метода при отчётности о том, что у конкретного индекса есть дочерние элементы, если для того же индекса установлен флаг Qt::ItemNeverHasChildren, не определено.
bool QAbstractItemModel::hasIndex(int row, int column, const QModelIndex &parent = QModelIndex()) const
Возвращает true если модель возвращает допустимый QModelIndex для row и column с parent, в противном случае возвращает false.
[virtual] QVariant QAbstractItemModel::headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const
Возвращает данные для заданного role и section в заголовке со значением orientation.
Для горизонтальных заголовков номер раздела соответствует номеру столбца. Аналогично, для вертикальных заголовков номер раздела соответствует номеру строки.
См. также Qt::ItemDataRole, setHeaderData() и QHeaderView.
[signal] void QAbstractItemModel::headerDataChanged(Qt::Orientation orientation, int first, int last)
Этот сигнал испускается всякий раз, когда изменяется заголовок. orientation указывает, изменился ли горизонтальный или вертикальный заголовок. Разделы в заголовке с first по last необходимо обновить.
При переопределении функции setHeaderData() этот сигнал необходимо явно испустить.
Если вы изменяете количество столбцов или строк, вам не нужно испускать этот сигнал, но используйте функции begin/end (обратитесь к разделу по наследованию в описании класса QAbstractItemModel для получения подробностей).
См. также headerData(), setHeaderData() и dataChanged().
[pure virtual] QModelIndex QAbstractItemModel::index(int row, int column, const QModelIndex &parent = QModelIndex()) const
Возвращает индекс элемента в модели, заданный заданными row, column и индексом parent.
При переопределении этой функции в подклассе вызывайте createIndex() для генерации индексов модели, которые другие компоненты могут использовать для ссылки на элементы в вашей модели.
См. также createIndex().
bool QAbstractItemModel::insertColumn(int column, const QModelIndex &parent = QModelIndex())
Вставляет один столбец перед заданным column в дочерних элементах указанного parent.
Возвращает true если столбец был вставлен; в противном случае возвращает false.
См. также insertColumns(), insertRow() и removeColumn().
[virtual] bool QAbstractItemModel::insertColumns(int column, int count, const QModelIndex &parent = QModelIndex())
В моделях, поддерживающих это, вставляет count новых столбцов в модель перед заданным column. Элементы в каждом новом столбце будут дочерними элементами элемента, представленного индексом модели parent.
Если column равен 0, столбцы добавляются в начало.
Если column равен columnCount(), столбцы добавляются в конец.
Если у parent нет дочерних элементов, вставляется одна строка с count столбцами.
Возвращает true если столбцы были успешно вставлены; в противном случае возвращает false.
Реализация базового класса ничего не делает и возвращает false.
Если вы реализуете собственную модель, вы можете переопределить эту функцию, если хотите поддерживать вставки. В качестве альтернативы, вы можете предоставить свой собственный API для изменения данных.
См. также insertRows(), removeColumns(), beginInsertColumns() и endInsertColumns().
bool QAbstractItemModel::insertRow(int row, const QModelIndex &parent = QModelIndex())
Вставляет одну строку перед заданной row в дочерние элементы указанного parent.
Примечание: Эта функция вызывает виртуальный метод insertRows.
Возвращает true если строка была вставлена; в противном случае возвращает false.
См. также insertRows(), insertColumn() и removeRow().
[virtual] bool QAbstractItemModel::insertRows(int row, int count, const QModelIndex &parent = QModelIndex())
Примечание: Реализация базового класса этой функции ничего не делает и возвращает false.
В моделях, поддерживающих это, вставляет count строк в модель перед заданной row. Элементы в новой строке будут дочерними элементами элемента, представленного индексом модели parent.
Если row равно 0, строки добавляются в начало.
Если row равно rowCount(), строки добавляются в конец.
Если у parent нет дочерних элементов, вставляется один столбец с count строками.
Возвращает true если строки были успешно вставлены; в противном случае возвращает false.
Если вы реализуете собственную модель, вы можете переопределить эту функцию, если хотите поддерживать вставки. В качестве альтернативы, вы можете предоставить свой собственный API для изменения данных. В любом случае вам нужно вызвать beginInsertRows() и endInsertRows(), чтобы уведомить другие компоненты о том, что модель изменилась.
См. также insertColumns(), removeRows(), beginInsertRows() и endInsertRows().
[virtual] QMap<int, QVariant> QAbstractItemModel::itemData(const QModelIndex &index) const
Возвращает карту с значениями для всех предопределённых ролей в модели для элемента в заданном индексе index.
Переопределите эту функцию, если вы хотите расширить стандартное поведение этой функции, включив пользовательские роли в карту.
См. также setItemData(), Qt::ItemDataRole и data().
[signal] void QAbstractItemModel::layoutAboutToBeChanged(const QList<QPersistentModelIndex> &parents = QList<QPersistentModelIndex> (), QAbstractItemModel::LayoutChangeHint hint = QAbstractItemModel::NoLayoutChangeHint)
Этот сигнал излучается незадолго до изменения структуры данных модели. Компоненты, подключённые к этому сигналу, используют его для адаптации к изменениям в структуре модели.
Подклассы должны обновлять все постоянные индексы модели после излучения сигнала layoutAboutToBeChanged().
Необязательный параметр parents используется для более точного уведомления о том, какие части структуры модели изменяются. Пустой список указывает на изменение всей структуры модели. Порядок элементов в списке parents не имеет значения. Необязательный параметр hint используется для предоставления подсказки о том, что происходит во время перестроения модели.
Эта функция была представлена в Qt 5.0.
См. также layoutChanged() и changePersistentIndex().
[signal] void QAbstractItemModel::layoutChanged(const QList<QPersistentModelIndex> &parents = QList<QPersistentModelIndex> (), QAbstractItemModel::LayoutChangeHint hint = QAbstractItemModel::NoLayoutChangeHint)
Этот сигнал излучается всякий раз, когда структура элементов, отображаемых моделью, изменяется; например, когда модель была отсортирована. Когда этот сигнал получает вид, он должен обновить структуру элементов, чтобы отразить это изменение.
При наследовании от QAbstractItemModel или QAbstractProxyModel, убедитесь, что вы излучаете layoutAboutToBeChanged() перед изменением порядка элементов или изменением структуры данных, которые вы предоставляете для отображения, и излучаете layoutChanged() после изменения структуры.
Необязательный параметр parents используется для более точного уведомления о том, какие части структуры модели изменяются. Пустой список указывает на изменение всей структуры модели. Порядок элементов в списке parents не имеет значения. Необязательный параметр hint используется для предоставления подсказки о том, что происходит во время перестроения модели.
Подклассы должны обновлять любые постоянные индексы модели перед излучением сигнала layoutChanged(). Другими словами, при изменении структуры:
- излучить layoutAboutToBeChanged
- Запомнить QModelIndex, который изменится
- Обновить ваши внутренние данные
- Вызвать changePersistentIndex()
- излучить layoutChanged
Эта функция была представлена в Qt 5.0.
См. также layoutAboutToBeChanged(), dataChanged(), headerDataChanged(), modelReset(), и changePersistentIndex().
[virtual] QModelIndexList QAbstractItemModel::match(const QModelIndex &start, int role, const QVariant &value, int hits = 1, Qt::MatchFlags flags = Qt::MatchFlags( Qt::MatchStartsWith | Qt::MatchWrap )) const
Возвращает список индексов для элементов в столбце индекса start, где данные, хранящиеся по заданному role, соответствуют заданному value. Способ поиска определяется заданными flags. Возвращаемый список может быть пустым. Обратите также внимание, что порядок результатов в списке может не соответствовать порядку в модели, если, например, используется прокси-модель. Порядок результатов нельзя гарантировать.
Поиск начинается с индекса start и продолжается до тех пор, пока количество совпавших элементов данных не станет равно hits, поиск не достигнет последней строки или не достигнет start снова — в зависимости от того, указано ли MatchWrap в flags. Если вы хотите найти все совпавшие элементы, используйте hits = -1.
По умолчанию эта функция выполняет сравнение, основанное на строках, с обходом по всем элементам, ищет элементы, начинающиеся с заданного в value поиска.
Примечание: Базовая реализация этой функции ищет только по столбцам. Переопределите эту функцию, чтобы реализовать другой алгоритм поиска.
[virtual] QMimeData *QAbstractItemModel::mimeData(const QModelIndexList &indexes) const
Возвращает объект, содержащий сериализованные элементы данных, соответствующие указанному списку индексов indexes. Формат, используемый для описания закодированных данных, получается из функции mimeTypes(). Эта базовая реализация использует стандартный MIME тип, возвращаемый базой реализации mimeTypes(). Если вы переопределите mimeTypes() в своей пользовательской модели для возвращения других MIME типов, переопределите эту функцию, чтобы использовать их.
Если список indexes пустой или нет поддерживаемых MIME типов, возвращается 0 вместо сериализованного пустого списка.
См. также mimeTypes() и dropMimeData().
[virtual] QStringList QAbstractItemModel::mimeTypes() const
Возвращает список разрешенных MIME типов. По умолчанию встроенные модели и представления используют внутренний MIME тип: application/x-qabstractitemmodeldatalist.
При реализации поддержки перетаскивания в пользовательской модели, если вы будете возвращать данные в форматах, отличных от стандартного внутреннего MIME типа, переопределите эту функцию, чтобы вернуть список ваших MIME типов.
Если вы переопределите эту функцию в своей пользовательской модели, вы также должны переопределить члены-функции, которые её вызывают: mimeData() и dropMimeData().
См. также mimeData() и dropMimeData().
[signal] void QAbstractItemModel::modelAboutToBeReset()
Этот сигнал излучается при вызове beginResetModel(), перед тем как внутреннее состояние модели (например, постоянные индексы модели) станет недоступным.
Эта функция была представлена в Qt 4.2.
Примечание: Это частный сигнал. Он может использоваться в соединениях сигналов, но не может излучаться пользователем.
См. также beginResetModel() и modelReset().
[signal] void QAbstractItemModel::modelReset()
Этот сигнал излучается при вызове endResetModel(), после того, как внутреннее состояние модели (например, постоянные индексы модели) станет недоступным.
Обратите внимание, что при сбросе модели следует считать все ранее полученные из неё данные недействительными. Это включает, но не ограничивается, rowCount() и columnCount(), flags(), данные, полученные через data(), и roleNames().
Эта функция была представлена в Qt 4.1.
Примечание: Это частный сигнал. Он может использоваться в соединениях сигналов, но не может излучаться пользователем.
См. также endResetModel() и modelAboutToBeReset().
bool QAbstractItemModel::moveColumn(const QModelIndex &sourceParent, int sourceColumn, const QModelIndex &destinationParent, int destinationChild)
В моделях, которые поддерживают эту операцию, перемещает sourceColumn из sourceParent в destinationChild под destinationParent.
Возвращает true если столбцы были успешно перемещены; в противном случае возвращает false.
См. также moveColumns() и moveRow().
[virtual] bool QAbstractItemModel::moveColumns(const QModelIndex &sourceParent, int sourceColumn, int count, const QModelIndex &destinationParent, int destinationChild)
В моделях, которые поддерживают эту операцию, перемещает count столбцов, начиная с sourceColumn под родителем sourceParent, в столбец destinationChild под родителем destinationParent.
Возвращает true если столбцы были успешно перемещены; в противном случае возвращает false.
Реализация базового класса ничего не делает и возвращает false.
Если вы реализуете свою собственную модель, вы можете переопределить эту функцию, если хотите поддерживать перемещение. В качестве альтернативы вы можете предоставить свой собственный API для изменения данных.
См. также beginMoveColumns() и endMoveColumns().
bool QAbstractItemModel::moveRow(const QModelIndex &sourceParent, int sourceRow, const QModelIndex &destinationParent, int destinationChild)
В моделях, поддерживающих эту операцию, перемещает строку sourceRow из sourceParent в destinationChild в рамках destinationParent.
Возвращает true при успешном перемещении строк; в противном случае возвращает false.
См. также moveRows() и moveColumn().
[virtual] bool QAbstractItemModel::moveRows(const QModelIndex &sourceParent, int sourceRow, int count, const QModelIndex &destinationParent, int destinationChild)
В моделях, поддерживающих эту операцию, перемещает count строк, начиная с sourceRow под родителем sourceParent, в позицию destinationChild под родителем destinationParent.
Возвращает true при успешном перемещении строк; в противном случае возвращает false.
Реализация базового класса ничего не делает и возвращает false.
Если вы реализуете свой собственный модель, вы можете переопределить эту функцию, чтобы поддержать перемещение. Альтернативно, вы можете предоставить свой собственный API для изменения данных.
См. также beginMoveRows() и endMoveRows().
[pure virtual] QModelIndex QAbstractItemModel::parent(const QModelIndex &index) const
Возвращает родительский элемент модели с заданным index. Если элемент не имеет родителя, возвращается невалидный QModelIndex.
В моделях, представляющих древовидную структуру данных, используется общепринятая конвенция: только элементы в первом столбце могут иметь дочерние элементы. В этом случае при переопределении этой функции в подклассе столбец возвращаемого QModelIndex будет равен 0.
При переопределении этой функции в подклассе будьте осторожны, избегайте вызова функций класса QModelIndex, таких как QModelIndex::parent(), так как индексы, принадлежащие вашей модели, просто вызовут вашу реализацию, что приведёт к бесконечной рекурсии.
См. также createIndex().
[protected] QModelIndexList QAbstractItemModel::persistentIndexList() const
Возвращает список индексов, хранящихся в модели в качестве постоянных индексов.
Функция была добавлена в Qt 4.2.
bool QAbstractItemModel::removeColumn(int column, const QModelIndex &parent = QModelIndex())
Удаляет заданный столбец column из дочерних элементов указанного родителя parent.
Возвращает true если столбец удален; в противном случае возвращает false.
См. также removeColumns(), removeRow(), и insertColumn().
[virtual] bool QAbstractItemModel::removeColumns(int column, int count, const QModelIndex &parent = QModelIndex())
В моделях, поддерживающих эту операцию, удаляет count столбцов, начиная со столбца column, под родителем parent из модели.
Возвращает true если столбцы были успешно удалены; в противном случае возвращает false.
Реализация базового класса ничего не делает и возвращает false.
Если вы реализуете свой собственный модель, вы можете переопределить эту функцию, чтобы поддержать удаление. Альтернативно, вы можете предоставить свой собственный API для изменения данных.
См. также removeColumn(), removeRows(), insertColumns(), beginRemoveColumns(), и endRemoveColumns().
bool QAbstractItemModel::removeRow(int row, const QModelIndex &parent = QModelIndex())
Удаляет заданную строку row из дочерних элементов указанного родителя parent.
Возвращает true если строка удалена; в противном случае возвращает false.
Это вспомогательная функция, которая вызывает removeRows(). Реализация QAbstractItemModel для removeRows() ничего не делает.
См. также removeRows(), removeColumn(), и insertRow().
[virtual] bool QAbstractItemModel::removeRows(int row, int count, const QModelIndex &parent = QModelIndex())
В моделях, поддерживающих эту операцию, удаляет count строк, начиная с строки row, под родителем parent из модели.
Возвращает true если строки были успешно удалены; в противном случае возвращает false.
Реализация базового класса ничего не делает и возвращает false.
Если вы реализуете свой собственный модель, вы можете переопределить эту функцию, чтобы поддержать удаление. Альтернативно, вы можете предоставить свой собственный API для изменения данных.
См. также removeRow(), removeColumns(), insertColumns(), beginRemoveRows(), и endRemoveRows().
[protected slot] void QAbstractItemModel::resetInternalData()
Этот слот вызывается сразу после очистки внутренних данных модели во время сброса.
Этот слот предоставляет удобство для подклассов конкретных прокси-моделей, таких как подклассы QSortFilterProxyModel, которые сохраняют дополнительные данные.
class CustomDataProxy : public QSortFilterProxyModel
{
Q_OBJECT
public:
CustomDataProxy(QObject *parent)
: QSortFilterProxyModel(parent)
{
}
...
QVariant data(const QModelIndex &index, int role)
{
if (role != Qt::BackgroundRole)
return QSortFilterProxyModel::data(index, role);
if (m_customData.contains(index.row()))
return m_customData.value(index.row());
return QSortFilterProxyModel::data(index, role);
}
private slots:
void resetInternalData()
{
m_customData.clear();
}
private:
QHash<int, QVariant> m_customData;
}; Примечание: Из-за ошибки этот слот отсутствует в Qt 5.0.
Функция была добавлена в Qt 4.8.
См. также modelAboutToBeReset() и modelReset().
[virtual slot] void QAbstractItemModel::revert()
Уведомляет модель о необходимости отбросить кэшированную информацию. Эта функция обычно используется для редактирования строк.
См. также submit().
[virtual] QHash<int, QByteArray> QAbstractItemModel::roleNames() const
Возвращает имена ролей модели.
Значения ролей по умолчанию, установленные Qt:
| Роль Qt | Имя роли QML |
|---|---|
| Qt::DisplayRole | display |
| Qt::DecorationRole | decoration |
| Qt::EditRole | edit |
| Qt::ToolTipRole | toolTip |
| Qt::StatusTipRole | statusTip |
| Qt::WhatsThisRole | whatsThis |
Функция была добавлена в Qt 4.6.
См. также setRoleNames().
[pure virtual] int QAbstractItemModel::rowCount(const QModelIndex &parent = QModelIndex()) const
Возвращает количество строк под заданным parent. Если родитель валиден, rowCount возвращает количество дочерних элементов родителя.
Примечание: При реализации модели таблицы функция rowCount() должна возвращать 0, когда родитель валиден.
См. также columnCount().
[signal] void QAbstractItemModel::rowsAboutToBeInserted(const QModelIndex &parent, int start, int end)
Этот сигнал испускается перед вставкой строк в модель. Новые элементы будут размещены между start и end включительно, под заданным элементом parent.
Примечание: Компоненты, подключённые к этому сигналу, используют его для адаптации к изменениям в размерах модели. Он может испускаться только реализацией QAbstractItemModel и не может быть явно испущен в коде подкласса.
Примечание: Это частный сигнал. Он может использоваться в подключениях сигналов, но не может быть испущен пользователем.
См. также insertRows() и beginInsertRows().
[signal] void QAbstractItemModel::rowsAboutToBeMoved(const QModelIndex &sourceParent, int sourceStart, int sourceEnd, const QModelIndex &destinationParent, int destinationRow)
Этот сигнал испускается незадолго до перемещения строк в модели. Элементы, которые будут перемещены, находятся между sourceStart и sourceEnd включительно, под заданным элементом sourceParent. Они будут перемещены в destinationParent, начиная с строки destinationRow.
Примечание: Компоненты, подключенные к этому сигналу, используют его для адаптации к изменениям размеров модели. Он может испускаться только реализацией QAbstractItemModel, и не может быть явно испущен в коде подкласса.
Эта функция была добавлена в Qt 4.6.
Примечание: Это частный сигнал. Он может использоваться в соединениях сигналов, но не может испускаться пользователем.
См. также beginMoveRows().
[signal] void QAbstractItemModel::rowsAboutToBeRemoved(const QModelIndex &parent, int first, int last)
Этот сигнал испускается незадолго до удаления строк из модели. Элементы, которые будут удалены, находятся между first и last включительно, под заданным элементом parent.
Примечание: Компоненты, подключенные к этому сигналу, используют его для адаптации к изменениям размеров модели. Он может испускаться только реализацией QAbstractItemModel, и не может быть явно испущен в коде подкласса.
Примечание: Это частный сигнал. Он может использоваться в соединениях сигналов, но не может испускаться пользователем.
См. также removeRows() и beginRemoveRows().
[signal] void QAbstractItemModel::rowsInserted(const QModelIndex &parent, int first, int last)
Этот сигнал испускается после вставки строк в модель. Новые элементы находятся между first и last включительно, под заданным элементом parent.
Примечание: Компоненты, подключенные к этому сигналу, используют его для адаптации к изменениям размеров модели. Он может испускаться только реализацией QAbstractItemModel, и не может быть явно испущен в коде подкласса.
Примечание: Это частный сигнал. Он может использоваться в соединениях сигналов, но не может испускаться пользователем.
См. также insertRows() и beginInsertRows().
[signal] void QAbstractItemModel::rowsMoved(const QModelIndex &parent, int start, int end, const QModelIndex &destination, int row)
Этот сигнал испускается после перемещения строк в модели. Элементы между start и end включительно, под заданным элементом parent, были перемещены в destination, начиная с строки row.
Примечание: Компоненты, подключенные к этому сигналу, используют его для адаптации к изменениям размеров модели. Он может испускаться только реализацией QAbstractItemModel, и не может быть явно испущен в коде подкласса.
Эта функция была добавлена в Qt 4.6.
Примечание: Это частный сигнал. Он может использоваться в соединениях сигналов, но не может испускаться пользователем.
См. также beginMoveRows().
[signal] void QAbstractItemModel::rowsRemoved(const QModelIndex &parent, int first, int last)
Этот сигнал испускается после удаления строк из модели. Удаленные элементы находятся между first и last включительно, под заданным элементом parent.
Примечание: Компоненты, подключенные к этому сигналу, используют его для адаптации к изменениям размеров модели. Он может испускаться только реализацией QAbstractItemModel, и не может быть явно испущен в коде подкласса.
Примечание: Это частный сигнал. Он может использоваться в соединениях сигналов, но не может испускаться пользователем.
См. также removeRows() и beginRemoveRows().
[virtual] bool QAbstractItemModel::setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole)
Устанавливает данные для роли role для элемента по индексу index со значением value.
Возвращает true в случае успеха; в противном случае возвращает false.
Сигнал dataChanged() должен быть испущен, если данные были успешно установлены.
Реализация базового класса возвращает false. Эта функция и data() должны быть переопределены для редактируемых моделей.
См. также Qt::ItemDataRole, data() и itemData().
[virtual] bool QAbstractItemModel::setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole)
Устанавливает данные для заданной роли role и секции section в заголовке с указанной ориентацией orientation со значением value.
Возвращает true если данные заголовка были обновлены; в противном случае возвращает false.
При переопределении этой функции сигнал headerDataChanged() должен быть явно испущен.
См. также Qt::ItemDataRole и headerData().
[virtual] bool QAbstractItemModel::setItemData(const QModelIndex &index, const QMap<int, QVariant> &roles)
Устанавливает данные роли для элемента по индексу index со значением из roles для каждой роли Qt::ItemDataRole.
Возвращает true в случае успеха; в противном случае возвращает false.
Роли, отсутствующие в roles, не будут изменены.
См. также setData(), data() и itemData().
[virtual] QModelIndex QAbstractItemModel::sibling(int row, int column, const QModelIndex &index) const
Возвращает элемент-«брата» по строке row и столбцу column для элемента по индексу index, или недействительный индекс QModelIndex, если такого элемента-«брата» нет.
Функция sibling() — это просто вспомогательная функция, которая находит родителя элемента и использует его для получения индекса элемента-«брата» в указанной строке и столбце.
Этот метод может быть по желанию переопределен для оптимизации, специфичной для реализации.
См. также index(), QModelIndex::row() и QModelIndex::column().
[virtual] void QAbstractItemModel::sort(int column, Qt::SortOrder order = Qt::AscendingOrder)
Сортирует модель по столбцу column в заданном порядке order.
Реализация базового класса ничего не делает.
[virtual] QSize QAbstractItemModel::span(const QModelIndex &index) const
Возвращает размер (количество строк и столбцов) ячейки элемента, представленного индексом index.
Примечание: В настоящее время span не используется.
[virtual slot] bool QAbstractItemModel::submit()
Сообщает модели, что она должна отправить кэшированные данные в постоянное хранилище. Эта функция обычно используется для редактирования строк.
Возвращает true при отсутствии ошибок; в противном случае возвращает false.
См. также revert().
[virtual] Qt::DropActions QAbstractItemModel::supportedDragActions() const
Возвращает действия, поддерживаемые данными в этой модели.
Реализация по умолчанию возвращает supportedDropActions(). Переопределите эту функцию, если хотите поддержать дополнительные действия.
supportedDragActions() используется QAbstractItemView::startDrag() в качестве значений по умолчанию при возникновении перетаскивания.
См. также setSupportedDragActions(), Qt::DropActions и Использование перетаскивания с помощью представлений элементов.
[virtual] Qt::DropActions QAbstractItemModel::supportedDropActions() const
Возвращает поддерживаемые данным моделью действия переноса.
Реализация по умолчанию возвращает Qt::CopyAction. Переопределите эту функцию, если хотите поддержать дополнительные действия. Вам также необходимо переопределить функцию dropMimeData(), чтобы обработать дополнительные операции.
Эта функция была добавлена в Qt 4.2.
См. также dropMimeData(), Qt::DropActions и Использование перетаскивания с помощью представлений элементов.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qabstractitemmodel.html