Класс QStandardItemModel
Класс QStandardItemModel предоставляет обобщённую модель для хранения пользовательских данных. Подробнее...
| Заголовок: | #include <QStandardItemModel> |
| qmake: | QT += gui |
| Наследует: | QAbstractItemModel |
Свойства
- sortRole : int
- 1 свойство унаследовано от QObject
Общедоступные функции
| QStandardItemModel(QObject *parent = Q_NULLPTR) | |
| QStandardItemModel(int rows, int columns, QObject *parent = Q_NULLPTR) | |
| ~QStandardItemModel() | |
| void | appendColumn(const QList<QStandardItem *> &items) |
| void | appendRow(const QList<QStandardItem *> &items) |
| void | appendRow(QStandardItem *item) |
| void | clear() |
| QList<QStandardItem *> | findItems(const QString &text, Qt::MatchFlags flags = Qt::MatchExactly, int column = 0) const |
| QStandardItem * | horizontalHeaderItem(int column) const |
| QModelIndex | indexFromItem(const QStandardItem *item) const |
| void | insertColumn(int column, const QList<QStandardItem *> &items) |
| bool | insertColumn(int column, const QModelIndex &parent = QModelIndex()) |
| void | insertRow(int row, const QList<QStandardItem *> &items) |
| void | insertRow(int row, QStandardItem *item) |
| bool | insertRow(int row, const QModelIndex &parent = QModelIndex()) |
| QStandardItem * | invisibleRootItem() const |
| QStandardItem * | item(int row, int column = 0) const |
| QStandardItem * | itemFromIndex(const QModelIndex &index) const |
| const QStandardItem * | itemPrototype() const |
| void | setColumnCount(int columns) |
| void | setHorizontalHeaderItem(int column, QStandardItem *item) |
| void | setHorizontalHeaderLabels(const QStringList &labels) |
| void | setItem(int row, int column, QStandardItem *item) |
| void | setItem(int row, QStandardItem *item) |
| void | setItemPrototype(const QStandardItem *item) |
| void | setItemRoleNames(const QHash<int, QByteArray> &roleNames) |
| void | setRowCount(int rows) |
| void | setSortRole(int role) |
| void | setVerticalHeaderItem(int row, QStandardItem *item) |
| void | setVerticalHeaderLabels(const QStringList &labels) |
| int | sortRole() const |
| QList<QStandardItem *> | takeColumn(int column) |
| QStandardItem * | takeHorizontalHeaderItem(int column) |
| QStandardItem * | takeItem(int row, int column = 0) |
| QList<QStandardItem *> | takeRow(int row) |
| QStandardItem * | takeVerticalHeaderItem(int row) |
| QStandardItem * | verticalHeaderItem(int row) const |
Переопределенные общедоступные функции
| виртуальный int | columnCount(const QModelIndex &parent = QModelIndex()) const |
| виртуальный QVariant | data(const QModelIndex &index, int role = Qt::DisplayRole) const |
| виртуальный bool | dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) |
| виртуальный Qt::ItemFlags | flags(const QModelIndex &index) const |
| виртуальный bool | hasChildren(const QModelIndex &parent = QModelIndex()) const |
| виртуальный QVariant | headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const |
| виртуальный QModelIndex | index(int row, int column, const QModelIndex &parent = QModelIndex()) const |
| виртуальный bool | insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()) |
| виртуальный bool | insertRows(int row, int count, const QModelIndex &parent = QModelIndex()) |
| виртуальный QMap<int, QVariant> | itemData(const QModelIndex &index) const |
| виртуальный QMimeData * | mimeData(const QModelIndexList &indexes) const |
| виртуальный QStringList | mimeTypes() const |
| виртуальный QModelIndex | parent(const QModelIndex &child) const |
| виртуальный bool | removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()) |
| виртуальный bool | removeRows(int row, int count, const QModelIndex &parent = QModelIndex()) |
| виртуальный int | rowCount(const QModelIndex &parent = QModelIndex()) const |
| виртуальный bool | setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) |
| виртуальный bool | setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole) |
| виртуальный bool | setItemData(const QModelIndex &index, const QMap<int, QVariant> &roles) |
| виртуальный QModelIndex | sibling(int row, int column, const QModelIndex &idx) const |
| виртуальный void | sort(int column, Qt::SortOrder order = Qt::AscendingOrder) |
| виртуальный Qt::DropActions | supportedDropActions() const |
- 39 общедоступные функции, унаследованные от QAbstractItemModel
- 32 общедоступные функции, унаследованные от QObject
Сигналы
| void | itemChanged(QStandardItem *item) |
- 18 сигналов, унаследованных от QAbstractItemModel
- 2 сигналов, унаследованных от QObject
Дополнительные унаследованные члены
- 2 общедоступных слота, унаследованные от QAbstractItemModel
- 1 общедоступный слот, унаследованный от QObject
- 11 статические общедоступные члены, унаследованные от QObject
- 19 защищенных функций, унаследованных от QAbstractItemModel
- 9 защищенных функций, унаследованных от QObject
- 1 защищенный слот, унаследованный от QAbstractItemModel
Подробное описание
Класс QStandardItemModel предоставляет общий вид модели для хранения пользовательских данных.
QStandardItemModel может использоваться в качестве хранилища стандартных типов данных Qt. Он является одним из классов Модель/Представление и входит в фреймворк Qt модель/представление.
QStandardItemModel обеспечивает классический подход на основе элементов при работе с моделью. Элементы в QStandardItemModel предоставляются классом QStandardItem.
QStandardItemModel реализует интерфейс QAbstractItemModel, что означает, что модель может использоваться для предоставления данных в любом представлении, поддерживающем этот интерфейс (например, QListView, QTableView и QTreeView, и в собственных пользовательских представлениях). Для повышения производительности и гибкости можно наследовать от QAbstractItemModel для поддержки различных типов хранилищ данных. Например, QDirModel предоставляет интерфейс модели к файловой системе.
Когда требуется список или дерево, обычно создается пустой QStandardItemModel и используются appendRow() для добавления элементов в модель и item() для доступа к элементу. Если ваша модель представляет таблицу, обычно передаются размеры таблицы в конструктор QStandardItemModel, и используется setItem() для размещения элементов в таблице. Также можно использовать setRowCount() и setColumnCount() для изменения размеров модели. Для вставки элементов используйте insertRow() или insertColumn(), а для удаления — removeRow() или removeColumn().
Можно задать метки заголовков вашей модели с помощью setHorizontalHeaderLabels() и setVerticalHeaderLabels().
Можно искать элементы в модели с помощью findItems() и сортировать модель, вызвав sort().
Вызовите clear() для удаления всех элементов из модели.
Пример использования QStandardItemModel для создания таблицы:
QStandardItemModel model(4, 4);
for (int row = 0; row < 4; ++row) {
for (int column = 0; column < 4; ++column) {
QStandardItem *item = new QStandardItem(QString("row %0, column %1").arg(row).arg(column));
model.setItem(row, column, item);
}
} Пример использования QStandardItemModel для создания дерева:
QStandardItemModel model;
QStandardItem *parentItem = model.invisibleRootItem();
for (int i = 0; i < 4; ++i) {
QStandardItem *item = new QStandardItem(QString("item %0").arg(i));
parentItem->appendRow(item);
parentItem = item;
} После установки модели на представление, обычно требуется реагировать на действия пользователя, такие как щелчок по элементу. Поскольку QAbstractItemView предоставляет сигналы и функции на основе QModelIndex, вам нужен способ получения QStandardItem, соответствующего заданному QModelIndex, и наоборот. itemFromIndex() и indexFromItem() обеспечивают это сопоставление. Типичное использование itemFromIndex() включает получение элемента в текущем индексе в представлении и получение элемента, соответствующего индексу, переданному сигналом QAbstractItemView, например, QAbstractItemView::clicked(). Сначала подключите сигнал представления к слоту в вашем классе:
QTreeView *treeView = new QTreeView(this);
treeView->setModel(myStandardItemModel);
connect(treeView, SIGNAL(clicked(QModelIndex)),
this, SLOT(clicked(QModelIndex))); При получении сигнала вызывается itemFromIndex() для заданного индекса модели, чтобы получить указатель на элемент:
void MyWidget::clicked(const QModelIndex &index)
{
QStandardItem *item = myStandardItemModel->itemFromIndex(index);
// Do stuff with the item ...
} Обратно, вам нужно получить QModelIndex элемента, когда вы хотите вызвать функцию модели/представления, принимающую индекс в качестве аргумента. Вы можете получить индекс либо с помощью функции модели indexFromItem(), либо, что равносильно, вызвав QStandardItem::index():
treeView->scrollTo(item->index());
Конечно, вы не обязаны использовать подход на основе элементов; вы можете полностью полагаться на интерфейс QAbstractItemModel при работе с моделью или использовать их комбинацию по мере необходимости.
END_OF_DOCUMENT_MARKERСм. также QStandardItem, Программирование на основе моделей/представлений, QAbstractItemModel, Пример простого дерева моделей и Классы-удобства для представлений элементов.
Документация свойств
sortRole : int
Это свойство содержит роль элемента, используемую для запроса данных модели при сортировке элементов.
Значение по умолчанию — Qt::DisplayRole.
Это свойство было введено в Qt 4.2.
Функции доступа:
| int | sortRole() const |
| void | setSortRole(int role) |
См. также sort() и QStandardItem::sortChildren().
Документация по членам-функциям
QStandardItemModel::QStandardItemModel(QObject *parent = Q_NULLPTR)
Создаёт новую модель элементов с заданным parent.
QStandardItemModel::QStandardItemModel(int rows, int columns, QObject *parent = Q_NULLPTR)
Создаёт новую модель элементов, которая изначально содержит rows строк и columns столбцов и имеет заданный parent.
QStandardItemModel::~QStandardItemModel()
Удаляет модель. Модель уничтожает все свои элементы.
void QStandardItemModel::appendColumn(const QList<QStandardItem *> &items)
Добавляет столбец, содержащий items. При необходимости количество строк увеличивается до размера items.
Эта функция была введена в Qt 4.2.
См. также insertColumn() и appendRow().
void QStandardItemModel::appendRow(const QList<QStandardItem *> &items)
Добавляет строку, содержащую items. При необходимости количество столбцов увеличивается до размера items.
Эта функция была введена в Qt 4.2.
См. также insertRow() и appendColumn().
void QStandardItemModel::appendRow(QStandardItem *item)
Это перегруженная функция.
При создании списка или дерева, имеющего только один столбец, эта функция предоставляет удобный способ добавления одного нового элемента item.
Эта функция была введена в Qt 4.2.
void QStandardItemModel::clear()
Удаляет все элементы (включая заголовки) из модели и устанавливает количество строк и столбцов в ноль.
См. также removeColumns() и removeRows().
int QStandardItemModel::columnCount(const QModelIndex &parent = QModelIndex()) const
Переопределено из QAbstractItemModel::columnCount().
См. также setColumnCount().
QVariant QStandardItemModel::data(const QModelIndex &index, int role = Qt::DisplayRole) const
Переопределено из QAbstractItemModel::data().
См. также setData().
bool QStandardItemModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)
Переопределено из QAbstractItemModel::dropMimeData().
QList<QStandardItem *> QStandardItemModel::findItems(const QString &text, Qt::MatchFlags flags = Qt::MatchExactly, int column = 0) const
Возвращает список элементов, соответствующих заданному text, с использованием заданных flags, в заданном column.
Эта функция была введена в Qt 4.2.
Qt::ItemFlags QStandardItemModel::flags(const QModelIndex &index) const
Переопределено из QAbstractItemModel::flags().
bool QStandardItemModel::hasChildren(const QModelIndex &parent = QModelIndex()) const
Переопределено из QAbstractItemModel::hasChildren().
QVariant QStandardItemModel::headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const
Переопределено из QAbstractItemModel::headerData().
См. также setHeaderData().
QStandardItem *QStandardItemModel::horizontalHeaderItem(int column) const
Возвращает элемент горизонтального заголовка для column, если он был задан; в противном случае возвращает 0.
Эта функция была введена в Qt 4.2.
См. также setHorizontalHeaderItem() и verticalHeaderItem().
QModelIndex QStandardItemModel::index(int row, int column, const QModelIndex &parent = QModelIndex()) const
Переопределено из QAbstractItemModel::index().
QModelIndex QStandardItemModel::indexFromItem(const QStandardItem *item) const
Возвращает QModelIndex, связанный с данным item.
Используйте эту функцию, когда вам нужно выполнить операцию, требующую QModelIndex элемента, например, QAbstractItemView::scrollTo(). QStandardItem::index() предоставляется как удобство; оно эквивалентно вызову этой функции.
Эта функция была введена в Qt 4.2.
См. также itemFromIndex() и QStandardItem::index().
void QStandardItemModel::insertColumn(int column, const QList<QStandardItem *> &items)
Вставляет столбец в column, содержащий items. При необходимости количество строк увеличивается до размера items.
Эта функция была введена в Qt 4.2.
См. также takeColumn(), appendColumn() и insertRow().
bool QStandardItemModel::insertColumn(int column, const QModelIndex &parent = QModelIndex())
Вставляет один столбец перед заданным column в дочерние элементы parent, указанные. Возвращает true если столбец вставлен; в противном случае возвращает false.
См. также insertColumns(), insertRow() и removeColumn().
bool QStandardItemModel::insertColumns(int column, int count, const QModelIndex &parent = QModelIndex())
Переопределено из QAbstractItemModel::insertColumns().
void QStandardItemModel::insertRow(int row, const QList<QStandardItem *> &items)
Вставляет строку в row, содержащую items. При необходимости количество столбцов увеличивается до размера items.
Эта функция была введена в Qt 4.2.
См. также takeRow(), appendRow() и insertColumn().
void QStandardItemModel::insertRow(int row, QStandardItem *item)
Это перегруженный метод.
Вставляет строку в row, содержащую item.
При построении списка или дерева, имеющего только один столбец, эта функция предоставляет удобный способ добавления одного нового элемента.
Эта функция была добавлена в Qt 4.2.
bool QStandardItemModel::insertRow(int row, const QModelIndex &parent = QModelIndex())
Вставляет одну строку перед заданной строкой row в дочерних элементах родительского элемента parent. Возвращает true, если строка вставлена; в противном случае возвращает false.
См. также insertRows(), insertColumn() и removeRow().
[virtual] bool QStandardItemModel::insertRows(int row, int count, const QModelIndex &parent = QModelIndex())
Переопределено из QAbstractItemModel::insertRows().
QStandardItem *QStandardItemModel::invisibleRootItem() const
Возвращает невидимый корневой элемент модели.
Невидимый корневой элемент предоставляет доступ к элементам верхнего уровня модели через API QStandardItem, что позволяет написать функции, которые могут одинаково обращаться к элементам верхнего уровня и их дочерним элементам; например, рекурсивные функции, использующие модель дерева.
Примечание: Вызов index() для объекта QStandardItem, полученного из этой функции, недействителен.
Эта функция была добавлена в Qt 4.2.
QStandardItem *QStandardItemModel::item(int row, int column = 0) const
Возвращает элемент для заданного row и column, если он был задан; в противном случае возвращает 0.
Эта функция была добавлена в Qt 4.2.
См. также setItem(), takeItem() и itemFromIndex().
[signal] void QStandardItemModel::itemChanged(QStandardItem *item)
Этот сигнал излучается всякий раз, когда данные item изменились.
Эта функция была добавлена в Qt 4.2.
[virtual] QMap<int, QVariant> QStandardItemModel::itemData(const QModelIndex &index) const
Переопределено из QAbstractItemModel::itemData().
См. также setItemData().
QStandardItem *QStandardItemModel::itemFromIndex(const QModelIndex &index) const
Возвращает указатель на QStandardItem, связанный с заданным index.
Вызов этой функции обычно является первым шагом при обработке сигналов на основе QModelIndex от представления, таких как QAbstractItemView::activated(). В вашем слоте вы вызываете itemFromIndex(), с QModelIndex, переданным сигналом в качестве аргумента, чтобы получить указатель на соответствующий QStandardItem.
Обратите внимание, что эта функция лениво создаст элемент для индекса (используя itemPrototype()), и установит его в таблице дочерних элементов родительского элемента, если в этом индексе еще нет элемента.
Если index — это недействительный индекс, эта функция возвращает 0.
Эта функция была добавлена в Qt 4.2.
См. также indexFromItem().
const QStandardItem *QStandardItemModel::itemPrototype() const
Возвращает прототип элемента, используемый моделью. Модель использует прототип элемента как фабрику элементов, когда ей нужно создавать новые элементы по запросу (например, когда представление или делегат элемента вызывают setData()).
Эта функция была добавлена в Qt 4.2.
См. также setItemPrototype().
[virtual] QMimeData *QStandardItemModel::mimeData(const QModelIndexList &indexes) const
Переопределено из QAbstractItemModel::mimeData().
[virtual] QStringList QStandardItemModel::mimeTypes() const
Переопределено из QAbstractItemModel::mimeTypes().
[virtual] QModelIndex QStandardItemModel::parent(const QModelIndex &child) const
Переопределено из QAbstractItemModel::parent().
[virtual] bool QStandardItemModel::removeColumns(int column, int count, const QModelIndex &parent = QModelIndex())
Переопределено из QAbstractItemModel::removeColumns().
[virtual] bool QStandardItemModel::removeRows(int row, int count, const QModelIndex &parent = QModelIndex())
Переопределено из QAbstractItemModel::removeRows().
[virtual] int QStandardItemModel::rowCount(const QModelIndex &parent = QModelIndex()) const
Переопределено из QAbstractItemModel::rowCount().
См. также setRowCount().
void QStandardItemModel::setColumnCount(int columns)
Устанавливает количество столбцов в этой модели на columns. Если это значение меньше columnCount(), данные в нежелательных столбцах удаляются.
Эта функция была добавлена в Qt 4.2.
См. также columnCount() и setRowCount().
[virtual] bool QStandardItemModel::setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole)
Переопределено из QAbstractItemModel::setData().
См. также data().
[virtual] bool QStandardItemModel::setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole)
Переопределено из QAbstractItemModel::setHeaderData().
См. также headerData().
void QStandardItemModel::setHorizontalHeaderItem(int column, QStandardItem *item)
Устанавливает горизонтальный заголовок элемента для column на item. Модель принимает во владение элемент. При необходимости, количество столбцов увеличивается для размещения элемента. Предыдущий заголовок элемента (если он был) удаляется.
Эта функция была добавлена в Qt 4.2.
См. также horizontalHeaderItem(), setHorizontalHeaderLabels() и setVerticalHeaderItem().
void QStandardItemModel::setHorizontalHeaderLabels(const QStringList &labels)
Устанавливает горизонтальные заголовки, используя labels. Если необходимо, количество столбцов увеличивается до размера labels.
Эта функция была добавлена в Qt 4.2.
См. также setHorizontalHeaderItem().
void QStandardItemModel::setItem(int row, int column, QStandardItem *item)
Устанавливает элемент для заданного row и column на item. Модель принимает во владение элемент. При необходимости, количество строк и столбцов увеличивается, чтобы поместить элемент. Предыдущий элемент в заданном месте (если он был) удаляется.
Эта функция была добавлена в Qt 4.2.
См. также item().
void QStandardItemModel::setItem(int row, QStandardItem *item)
Это перегруженный метод.
[virtual] bool QStandardItemModel::setItemData(const QModelIndex &index, const QMap<int, QVariant> &roles)
Переопределено из QAbstractItemModel::setItemData().
См. также itemData().
void QStandardItemModel::setItemPrototype(const QStandardItem *item)
Устанавливает прототип элемента для модели в указанный item. Модель принимает владение прототипом.
Прототип элемента действует как фабрика QStandardItem, используя функцию QStandardItem::clone(). Чтобы предоставить свой собственный прототип, подклассируйте QStandardItem, переопределите QStandardItem::clone() и установите прототип в экземпляр вашего пользовательского класса. Всякий раз, когда QStandardItemModel нуждается в создании элемента по требованию (например, когда представление или делегат элемента вызывают setData()), новые элементы будут экземплярами вашего пользовательского класса.
Эта функция была введена в Qt 4.2.
См. также itemPrototype() и QStandardItem::clone().
void QStandardItemModel::setItemRoleNames(const QHash<int, QByteArray> &roleNames)
Устанавливает имена ролей элемента в roleNames.
void QStandardItemModel::setRowCount(int rows)
Устанавливает количество строк в этой модели на rows. Если это значение меньше rowCount(), данные в ненужных строках удаляются.
Эта функция была введена в Qt 4.2.
См. также rowCount() и setColumnCount().
void QStandardItemModel::setVerticalHeaderItem(int row, QStandardItem *item)
Устанавливает элемент вертикального заголовка для row в item. Модель принимает владение элементом. При необходимости количество строк увеличивается для размещения элемента. Предыдущий элемент заголовка (если он был) удаляется.
Эта функция была введена в Qt 4.2.
См. также verticalHeaderItem(), setVerticalHeaderLabels() и setHorizontalHeaderItem().
void QStandardItemModel::setVerticalHeaderLabels(const QStringList &labels)
Устанавливает метки вертикального заголовка, используя labels. При необходимости количество строк увеличивается до размера labels.
Эта функция была введена в Qt 4.2.
См. также setVerticalHeaderItem().
[virtual] QModelIndex QStandardItemModel::sibling(int row, int column, const QModelIndex &idx) const
Переопределено из QAbstractItemModel::sibling().
[virtual] void QStandardItemModel::sort(int column, Qt::SortOrder order = Qt::AscendingOrder)
Переопределено из QAbstractItemModel::sort().
[virtual] Qt::DropActions QStandardItemModel::supportedDropActions() const
Переопределено из QAbstractItemModel::supportedDropActions().
QStandardItemModel поддерживает копирование и перемещение.
QList<QStandardItem *> QStandardItemModel::takeColumn(int column)
Удаляет заданный column без удаления элементов столбца и возвращает список указателей на удалённые элементы. Модель отказывается от владения элементами. Для элементов в столбце, которые не были установлены, соответствующие указатели в списке будут 0.
Эта функция была введена в Qt 4.2.
См. также takeRow().
QStandardItem *QStandardItemModel::takeHorizontalHeaderItem(int column)
Удаляет элемент горизонтального заголовка в column из заголовка без удаления его и возвращает указатель на элемент. Модель отказывается от владения элементом.
Эта функция была введена в Qt 4.2.
См. также horizontalHeaderItem() и takeVerticalHeaderItem().
QStandardItem *QStandardItemModel::takeItem(int row, int column = 0)
Удаляет элемент в (row, column) без его удаления. Модель отказывается от владения элементом.
Эта функция была введена в Qt 4.2.
См. также item(), takeRow() и takeColumn().
QList<QStandardItem *> QStandardItemModel::takeRow(int row)
Удаляет заданную row без удаления элементов строки и возвращает список указателей на удалённые элементы. Модель отказывается от владения элементами. Для элементов в строке, которые не были установлены, соответствующие указатели в списке будут 0.
Эта функция была введена в Qt 4.2.
См. также takeColumn().
QStandardItem *QStandardItemModel::takeVerticalHeaderItem(int row)
Удаляет элемент вертикального заголовка в row из заголовка без удаления его и возвращает указатель на элемент. Модель отказывается от владения элементом.
Эта функция была введена в Qt 4.2.
См. также verticalHeaderItem() и takeHorizontalHeaderItem().
QStandardItem *QStandardItemModel::verticalHeaderItem(int row) const
Возвращает элемент вертикального заголовка для строки row, если он был установлен; в противном случае возвращает 0.
Эта функция была введена в Qt 4.2.
См. также setVerticalHeaderItem() и horizontalHeaderItem().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qstandarditemmodel.html