Spec-Zone.ru › Qt 6.1

Класс QStandardItemModel

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

Заголовок: #include <QStandardItemModel>
CMake: find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
Наследует: QAbstractItemModel
  • Список всех членов, включая унаследованные

Свойства

  • sortRole : int

Общедоступные функции

QStandardItemModel(int rows, int columns, QObject *parent = nullptr)
QStandardItemModel(QObject *parent = nullptr)
virtual ~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

Переопределённые общедоступные функции

виртуальный bool clearItemData(const QModelIndex &index) override
виртуальный int columnCount(const QModelIndex &parent = QModelIndex()) const override
виртуальный QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override
виртуальный bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override
виртуальный Qt::ItemFlags flags(const QModelIndex &index) const override
виртуальный bool hasChildren(const QModelIndex &parent = QModelIndex()) const override
виртуальный QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override
виртуальный QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override
виртуальный bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()) override
виртуальный bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()) override
виртуальный QMap<int, QVariant> itemData(const QModelIndex &index) const override
виртуальный QMimeData * mimeData(const QModelIndexList &indexes) const override
виртуальный QStringList mimeTypes() const override
виртуальный void multiData(const QModelIndex &index, QModelRoleDataSpan roleDataSpan) const override
виртуальный QModelIndex parent(const QModelIndex &child) const override
виртуальный bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()) override
виртуальный bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()) override
виртуальный QHash<int, QByteArray> roleNames() const override
виртуальный int rowCount(const QModelIndex &parent = QModelIndex()) const override
виртуальный bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override
виртуальный bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole) override
виртуальный bool setItemData(const QModelIndex &index, const QMap<int, QVariant> &roles) override
виртуальный void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) override
виртуальный Qt::DropActions supportedDropActions() const override

Сигналы

void itemChanged(QStandardItem *item)

Подробное описание

QStandardItemModel может использоваться в качестве хранилища стандартных типов данных Qt. Это один из классов модели/представления и является частью фреймворка Qt для модели/представления.

QStandardItemModel предоставляет классический подход на основе элементов для работы с моделью. Элементы в QStandardItemModel предоставляются QStandardItem.

QStandardItemModel реализует интерфейс QAbstractItemModel, что означает, что модель может использоваться для предоставления данных в любом представлении, поддерживающем этот интерфейс (таких как QListView, QTableView и QTreeView, и ваших собственных пользовательских представлений). Для повышения производительности и гибкости вы можете создать подкласс QAbstractItemModel для поддержки различных типов хранилищ данных. Например, QFileSystemModel предоставляет интерфейс модели для работы с файловой системой.

Когда вам нужен список или дерево, обычно вы создаёте пустой 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 < model.rowCount(); ++row) {
    for (int column = 0; column < model.columnCount(); ++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, &QTreeView::clicked,
        this, &MyWidget::clicked);

При получении сигнала вы вызываете 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 при работе с моделью или использовать их комбинацию по мере необходимости.

См. также QStandardItem, Модель/Представление, QAbstractItemModel, Пример простой модели дерева и Классы удобства представления элементов.

Документация по свойствам

[bindable] sortRole : int

Примечание: Это свойство поддерживает привязки QProperty.

Это свойство хранит роль элемента, используемую для запроса данных модели при сортировке элементов.

Значение по умолчанию — Qt::DisplayRole.

См. также sort() и QStandardItem::sortChildren().

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

QStandardItemModel::QStandardItemModel(int rows, int columns, QObject *parent = nullptr)

Создаёт новую модель элементов, которая изначально имеет rows строк и columns столбцов и имеет заданного parent.

QStandardItemModel::QStandardItemModel(QObject *parent = nullptr)

Создаёт новую модель элементов с заданным parent.

[signal] void QStandardItemModel::itemChanged(QStandardItem *item)

Этот сигнал излучается всякий раз, когда данные элемента item изменяются.

[virtual] QStandardItemModel::~QStandardItemModel()

Удаляет модель. Модель удаляет все свои элементы.

void QStandardItemModel::appendColumn(const QList<QStandardItem *> &items)

Добавляет столбец, содержащий элементы items. При необходимости количество строк увеличивается до размера items.

См. также insertColumn() и appendRow().

void QStandardItemModel::appendRow(const QList<QStandardItem *> &items)

Добавляет строку, содержащую элементы items. При необходимости количество столбцов увеличивается до размера items.

См. также insertRow() и appendColumn().

void QStandardItemModel::appendRow(QStandardItem *item)

Это перегруженная функция.

При создании списка или дерева, имеющего только один столбец, эта функция предоставляет удобный способ добавления одного нового элемента item.

void QStandardItemModel::clear()

Удаляет все элементы (включая заголовки) из модели и устанавливает количество строк и столбцов в ноль.

См. также removeColumns() и removeRows().

[override virtual] bool QStandardItemModel::clearItemData(const QModelIndex &index)

Реализует: QAbstractItemModel::clearItemData(const QModelIndex &index).

[override virtual] int QStandardItemModel::columnCount(const QModelIndex &parent = QModelIndex()) const

Реализует: QAbstractItemModel::columnCount(const QModelIndex &parent) const.

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

[override virtual] QVariant QStandardItemModel::data(const QModelIndex &index, int role = Qt::DisplayRole) const

Реализует: QAbstractItemModel::data(const QModelIndex &index, int role) const.

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

[override virtual] bool QStandardItemModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)

Реализует: QAbstractItemModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent).

QList<QStandardItem *> QStandardItemModel::findItems(const QString &text, Qt::MatchFlags flags = Qt::MatchExactly, int column = 0) const

Возвращает список элементов, которые соответствуют заданному text, используя заданные flags, в заданном column.

[override virtual] Qt::ItemFlags QStandardItemModel::flags(const QModelIndex &index) const

Реализует: QAbstractItemModel::flags(const QModelIndex &index) const.

[override virtual] bool QStandardItemModel::hasChildren(const QModelIndex &parent = QModelIndex()) const

Реализует: QAbstractItemModel::hasChildren(const QModelIndex &parent) const.

[override virtual] QVariant QStandardItemModel::headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const

Реализует: QAbstractItemModel::headerData(int section, Qt::Orientation orientation, int role) const.

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

QStandardItem *QStandardItemModel::horizontalHeaderItem(int column) const

Возвращает элемент заголовка для столбца column, если он был задан; в противном случае возвращает nullptr.

См. также setHorizontalHeaderItem() и verticalHeaderItem().

[override virtual] QModelIndex QStandardItemModel::index(int row, int column, const QModelIndex &parent = QModelIndex()) const

Реализует: QAbstractItemModel::index(int row, int column, const QModelIndex &parent) const.

QModelIndex QStandardItemModel::indexFromItem(const QStandardItem *item) const

Возвращает QModelIndex, связанную с заданным элементом item.

Используйте эту функцию, когда требуется выполнить операцию, требующую QModelIndex элемента, например, QAbstractItemView::scrollTo(). QStandardItem::index() предоставляется для удобства; она эквивалентна вызову этой функции.

См. также itemFromIndex() и QStandardItem::index().

void QStandardItemModel::insertColumn(int column, const QList<QStandardItem *> &items)

Вставляет столбец в column, содержащий items. При необходимости количество строк увеличивается до размера items.

См. также takeColumn(), appendColumn(), и insertRow().

bool QStandardItemModel::insertColumn(int column, const QModelIndex &parent = QModelIndex())

Вставляет один столбец перед заданным column в дочерние элементы указанного parent. Возвращает true если столбец вставлен; в противном случае возвращает false.

См. также insertColumns(), insertRow(), и removeColumn().

[override virtual] bool QStandardItemModel::insertColumns(int column, int count, const QModelIndex &parent = QModelIndex())

Реализует: QAbstractItemModel::insertColumns(int column, int count, const QModelIndex &parent).

void QStandardItemModel::insertRow(int row, const QList<QStandardItem *> &items)

Вставляет строку в row, содержащую items. При необходимости количество столбцов увеличивается до размера items.

См. также takeRow(), appendRow() и insertColumn().

void QStandardItemModel::insertRow(int row, QStandardItem *item)

Это перегруженный метод.

Вставляет строку по индексу row, содержащую item.

При построении списка или дерева, имеющего только один столбец, этот метод обеспечивает удобный способ добавления одного нового элемента.

bool QStandardItemModel::insertRow(int row, const QModelIndex &parent = QModelIndex())

Вставляет одну строку перед заданной строкой row в дочерних элементах parent. Возвращает true, если строка вставлена; в противном случае возвращает false.

См. также insertRows(), insertColumn() и removeRow().

[override virtual] bool QStandardItemModel::insertRows(int row, int count, const QModelIndex &parent = QModelIndex())

Реализует: QAbstractItemModel::insertRows(int row, int count, const QModelIndex &parent).

QStandardItem *QStandardItemModel::invisibleRootItem() const

Возвращает невидимый корневой элемент модели.

Невидимый корневой элемент предоставляет доступ к элементам верхнего уровня модели через API QStandardItem, что позволяет писать функции, которые могут обрабатывать элементы верхнего уровня и их потомков одинаковым образом; например, рекурсивные функции, связанные с моделью дерева.

Примечание: Вызов index() для объекта QStandardItem, полученного из этой функции, некорректен.

QStandardItem *QStandardItemModel::item(int row, int column = 0) const

Возвращает элемент для заданного row и column, если он был задан; в противном случае возвращает nullptr.

См. также setItem(), takeItem() и itemFromIndex().

[override virtual] QMap<int, QVariant> QStandardItemModel::itemData(const QModelIndex &index) const

Реализует: QAbstractItemModel::itemData(const QModelIndex &index) const.

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

QStandardItem *QStandardItemModel::itemFromIndex(const QModelIndex &index) const

Возвращает указатель на QStandardItem, связанный с заданным индексом index.

Вызов этой функции обычно является начальным шагом при обработке сигналов на основе QModelIndex от представления, например, QAbstractItemView::activated(). В вашем слоте вы вызываете itemFromIndex(), с QModelIndex, переданным сигналом в качестве аргумента, чтобы получить указатель на соответствующий QStandardItem.

Обратите внимание, что эта функция лениво создаст элемент для индекса (используя itemPrototype()), и установит его в таблице дочерних элементов родительского элемента, если элемент в этом индексе еще не существует.

Если index — некорректный индекс, эта функция возвращает nullptr.

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

const QStandardItem *QStandardItemModel::itemPrototype() const

Возвращает шаблон элемента, используемый моделью. Модель использует шаблон элемента как фабрику элементов, когда ей необходимо создавать новые элементы по запросу (например, когда представление или делегат элемента вызывают setData()).

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

[override virtual] QMimeData *QStandardItemModel::mimeData(const QModelIndexList &indexes) const

Реализует: QAbstractItemModel::mimeData(const QModelIndexList &indexes) const.

[override virtual] QStringList QStandardItemModel::mimeTypes() const

Реализует: QAbstractItemModel::mimeTypes() const.

[override virtual] void QStandardItemModel::multiData(const QModelIndex &index, QModelRoleDataSpan roleDataSpan) const

Реализует: QAbstractItemModel::multiData(const QModelIndex &index, QModelRoleDataSpan roleDataSpan) const.

[override virtual] QModelIndex QStandardItemModel::parent(const QModelIndex &child) const

Реализует: QAbstractItemModel::parent(const QModelIndex &index) const.

[override virtual] bool QStandardItemModel::removeColumns(int column, int count, const QModelIndex &parent = QModelIndex())

Реализует: QAbstractItemModel::removeColumns(int column, int count, const QModelIndex &parent).

[override virtual] bool QStandardItemModel::removeRows(int row, int count, const QModelIndex &parent = QModelIndex())

Реализует: QAbstractItemModel::removeRows(int row, int count, const QModelIndex &parent).

[override virtual] QHash<int, QByteArray> QStandardItemModel::roleNames() const

Реализует: QAbstractItemModel::roleNames() const.

reimp

[override virtual] int QStandardItemModel::rowCount(const QModelIndex &parent = QModelIndex()) const

Реализует: QAbstractItemModel::rowCount(const QModelIndex &parent) const.

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

void QStandardItemModel::setColumnCount(int columns)

Устанавливает количество столбцов в этой модели на columns. Если это значение меньше columnCount(), данные в нежелательных столбцах удаляются.

См. также columnCount() и setRowCount().

[override virtual] bool QStandardItemModel::setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole)

Реализует: QAbstractItemModel::setData(const QModelIndex &index, const QVariant &value, int role).

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

[override virtual] bool QStandardItemModel::setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole)

Реализует: QAbstractItemModel::setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role).

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

void QStandardItemModel::setHorizontalHeaderItem(int column, QStandardItem *item)

Устанавливает горизонтальный заголовок для column на item. Модель принимает владение элементом. При необходимости количество столбцов увеличивается, чтобы вместить элемент. Предыдущий заголовок (если он был) удаляется.

См. также horizontalHeaderItem(), setHorizontalHeaderLabels() и setVerticalHeaderItem().

void QStandardItemModel::setHorizontalHeaderLabels(const QStringList &labels)

Устанавливает горизонтальные заголовки с помощью labels. При необходимости количество столбцов увеличивается до размера labels.

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

void QStandardItemModel::setItem(int row, int column, QStandardItem *item)

Устанавливает элемент для заданной строки и столбца в item. Модель получает владение элементом. При необходимости, количество строк и столбцов увеличивается для размещения элемента. Предыдущий элемент в заданном месте (если он был) удаляется.

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

void QStandardItemModel::setItem(int row, QStandardItem *item)

Это перегруженный метод.

[override virtual] bool QStandardItemModel::setItemData(const QModelIndex &index, const QMap<int, QVariant> &roles)

Переопределяет: QAbstractItemModel::setItemData(const QModelIndex &index, const QMap<int, QVariant> &roles).

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

void QStandardItemModel::setItemPrototype(const QStandardItem *item)

Устанавливает прототип элемента для модели в указанный item. Модель получает владение прототипом.

Прототип элемента выступает как фабрика QStandardItem, опираясь на функцию QStandardItem::clone(). Чтобы предоставить свой собственный прототип, подклассируйте QStandardItem, переопределите QStandardItem::clone() и установите прототип в экземпляр вашего пользовательского класса. Всякий раз, когда QStandardItemModel нуждается в создании элемента по требованию (например, когда виджет или делегат элемента вызывают setData()), новые элементы будут экземплярами вашего пользовательского класса.

См. также itemPrototype() и QStandardItem::clone().

void QStandardItemModel::setItemRoleNames(const QHash<int, QByteArray> &roleNames)

Устанавливает имена ролей элемента в roleNames.

void QStandardItemModel::setRowCount(int rows)

Устанавливает количество строк в этой модели в rows. Если это значение меньше, чем rowCount(), данные в нежелательных строках удаляются.

См. также rowCount() и setColumnCount().

void QStandardItemModel::setVerticalHeaderItem(int row, QStandardItem *item)

Устанавливает элемент вертикального заголовка для строки в item. Модель получает владение элементом. При необходимости, количество строк увеличивается для размещения элемента. Предыдущий элемент заголовка (если он был) удаляется.

См. также verticalHeaderItem(), setVerticalHeaderLabels() и setHorizontalHeaderItem().

void QStandardItemModel::setVerticalHeaderLabels(const QStringList &labels)

Устанавливает метки вертикального заголовка с использованием labels. При необходимости, количество строк увеличивается до размера labels.

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

[override virtual] void QStandardItemModel::sort(int column, Qt::SortOrder order = Qt::AscendingOrder)

Переопределяет: QAbstractItemModel::sort(int column, Qt::SortOrder order).

[override virtual] Qt::DropActions QStandardItemModel::supportedDropActions() const

Переопределяет: QAbstractItemModel::supportedDropActions() const.

QStandardItemModel поддерживает копирование и перемещение.

QList<QStandardItem *> QStandardItemModel::takeColumn(int column)

Удаляет заданный столбец без удаления элементов столбца и возвращает список указателей на удаленные элементы. Модель освобождает владение элементами. Для элементов в столбце, которые не были установлены, соответствующие указатели в списке будут nullptr.

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

QStandardItem *QStandardItemModel::takeHorizontalHeaderItem(int column)

Удаляет элемент горизонтального заголовка в столбце из заголовка без удаления его и возвращает указатель на элемент. Модель освобождает владение элементом.

См. также horizontalHeaderItem() и takeVerticalHeaderItem().

QStandardItem *QStandardItemModel::takeItem(int row, int column = 0)

Удаляет элемент в (row, column) без его удаления. Модель освобождает владение элементом.

См. также item(), takeRow() и takeColumn().

QList<QStandardItem *> QStandardItemModel::takeRow(int row)

Удаляет заданную строку без удаления элементов строки и возвращает список указателей на удаленные элементы. Модель освобождает владение элементами. Для элементов в строке, которые не были установлены, соответствующие указатели в списке будут nullptr.

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

QStandardItem *QStandardItemModel::takeVerticalHeaderItem(int row)

Удаляет элемент вертикального заголовка в строке из заголовка без удаления его и возвращает указатель на элемент. Модель освобождает владение элементом.

См. также verticalHeaderItem() и takeHorizontalHeaderItem().

QStandardItem *QStandardItemModel::verticalHeaderItem(int row) const

Возвращает элемент вертикального заголовка для строки row, если он был установлен; в противном случае возвращает nullptr.

См. также setVerticalHeaderItem() и horizontalHeaderItem().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qstandarditemmodel.html

Spec-Zone.ru

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