QStandardItemModel Class

QStandardItemModel クラスは、カスタムデータを保存するための汎用モデルを提供します。詳細...

ヘッダ #include <QStandardItemModel>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
継承: QAbstractItemModel

プロパティ

パブリック関数

QStandardItemModel(QObject *parent = nullptr)
QStandardItemModel(int rows, int columns, QObject *parent = nullptr)
virtual ~QStandardItemModel()
void appendColumn(const QList<QStandardItem *> &items)
void appendRow(const QList<QStandardItem *> &items)
void appendRow(QStandardItem *item)
QBindable<int> bindableSortRole()
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)
bool insertRow(int row, const QModelIndex &parent = QModelIndex())
void insertRow(int row, QStandardItem *item)
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

再実装パブリック関数

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

シグナル

void itemChanged(QStandardItem *item)

詳細説明

QStandardItemModelは、Qtの標準的なデータ型のリポジトリとして使用することができます。これはモデル/ビュー・クラスの一つであり、Qt のモデル/ビュー・フレームワークの一部です。

QStandardItemModel は、モデルを扱うための古典的なアイテム・ベースのアプローチを提供します。QStandardItemModel のアイテムは、QStandardItem によって提供されます。

QStandardItemModel は、QAbstractItemModel インターフェースを実装しています。これは、そのインターフェイスをサポートしているビュー(QListViewQTableViewQTreeView 、そして独自のカスタムビューなど)において、モデルを使用してデータを提供することができることを意味しています。パフォーマンスと柔軟性のために、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;
}

ビューにモデルを設定した後、通常、アイテムがクリックされるなどのユーザーのアクションに反応させたいと思うでしょう。QAbstractItemViewQModelIndex ベースのシグナルと関数を提供するので、与えられたQModelIndex に対応するQStandardItem を取得する方法が必要です。itemFromIndex() とindexFromItem() は、このマッピングを提供する。itemFromIndex() の典型的な使用法は、ビューの現在のインデックスにあるアイテムを取得することと、QAbstractItemView::clicked() のようなQAbstractItemView シグナルが伝えるインデックスに対応するアイテムを取得することです。まず、ビューのシグナルをクラスのスロットに接続します:

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 インターフェースに完全に依存することもできますし、2つを適切に組み合わせて使用することもできます。

QStandardItem,Model/View Programming,QAbstractItemModel,Simple Tree Model example, andItem View Convenience Classesも参照してください

プロパティのドキュメント

[bindable] sortRole : int

注: このプロパティはQProperty バインディングをサポートします。

このプロパティは、アイテムをソートする際にモデルのデータをクエリするために使用されるアイテムのロールを保持します。

デフォルト値はQt::DisplayRole です。

sort() およびQStandardItem::sortChildren()も参照してください

メンバ関数ドキュメント

[explicit] QStandardItemModel::QStandardItemModel(QObject *parent = nullptr)

与えられたparent で新しいアイテムモデルを構築します。

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

最初にrows 行とcolumns 列を持ち、与えられたparent を持つ新しいアイテムモデルを構築する。

[virtual noexcept] 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)

これはオーバーロードされた関数である。

1つの列しかないリストやツリーを構築するとき、この関数は新しいitem を1つ追加する便利な方法を提供します。

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

与えられたcolumn の中で、与えられたflags を使って、与えられたtext にマッチする項目のリストを返す。

[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

与えられたitem に関連付けられたQModelIndex を返す。

この関数は、QAbstractItemView::scrollTo() のように、アイテムのQModelIndex を必要とする操作を行いたいときに使用する。QStandardItem::index() は便宜上提供されているもので、この関数を呼び出すのと同じです。

itemFromIndex() およびQStandardItem::index()も参照

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

items を含む列をcolumn に挿入する。必要に応じて、行数はitems のサイズまで増加される。

takeColumn()、appendColumn()、insertRow()も参照のこと

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

指定されたparent の子項目で、指定されたcolumn の前に 1 つの列を挿入する。カラムが挿入された場合は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)

items を含む行をrow に挿入する。必要であれば、列数はitems のサイズまで増加される。

takeRow()、appendRow()、insertColumn()も参照のこと

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

指定されたparent の子項目で、指定されたrow の前に 1 行挿入する。行が挿入された場合はtrue を返し、そうでない場合はfalse を返す。

insertRows()、insertColumn() およびremoveRow()も参照

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

これはオーバーロードされた関数である。

item を含む行をrow に挿入する。

列が1つしかないリストやツリーを作成する場合、この関数を使用すると、新しい項目を1つ追加するのに便利です。

[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

モデルの不可視ルート項目を返します。

不可視ルート項目は、QStandardItem APIを通じてモデルのトップレベル項目へのアクセスを提供し、トップレベル項目とその子項目を統一的な方法で扱うことができる関数を書くことを可能にします。

注意: この関数から取得したQStandardItem オブジェクトに対してindex() を呼び出すことは無効です。

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

指定されたrowcolumn が設定されている場合はその項目を返し、そうでない場合はnullptr を返す。

setItem()、takeItem()、itemFromIndex()も参照

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

このシグナルは、item のデータが変更されるたびに発せられる。

[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

与えられたindex に関連付けられたQStandardItem へのポインタを返す。

この関数を呼び出すのは、通常、QAbstractItemView::activated() のような、QModelIndex に基づくシグナルをビューから処理するときの最初のステップです。スロットでは、シグナルによって運ばれたQModelIndex を引数として itemFromIndex() を呼び出し、対応する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)

与えられたrowcolumn のアイテムを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::clone() 関数に依存することで、QStandardItem ファクトリーとして動作します。独自のプロトタイプを提供するには、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)

row の垂直ヘッダー項目を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)

列項目を削除せずに、与えられたcolumn を削除し、削除された項目へのポインタのリストを返します。モデルはアイテムの所有権を解放します。設定されていない列の項目については、リスト内の対応するポインタはnullptr になります。

takeRow()も参照してください

QStandardItem *QStandardItemModel::takeHorizontalHeaderItem(int column)

column の水平ヘッダー項目を削除せずにヘッダーから取り除き、その項目へのポインターを返す。モデルはアイテムの所有権を解放します。

horizontalHeaderItem() およびtakeVerticalHeaderItem()も参照して ください。

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

(row,column) にあるアイテムを削除せずに取り除きます。モデルはアイテムの所有権を解放します。

item(),takeRow(),takeColumn()も参照してください

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

行項目を削除せずに、与えられたrow を削除し、削除された項目へのポインタのリストを返します。モデルは項目の所有権を解放します。設定されていない行の項目については、リスト内の対応するポインタはnullptr になります。

takeColumn()も参照してください

QStandardItem *QStandardItemModel::takeVerticalHeaderItem(int row)

row の垂直ヘッダー項目を削除せずにヘッダーから取り除き、その項目へのポインターを返す。モデルはアイテムの所有権を解放します。

verticalHeaderItem() およびtakeHorizontalHeaderItem()も参照して ください。

QStandardItem *QStandardItemModel::verticalHeaderItem(int row) const

行の垂直ヘッダ項目row が設定されていればそれを返す。そうでなければnullptr を返す。

setVerticalHeaderItem() およびhorizontalHeaderItem()も参照のこと

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.