QStandardItemModel Class

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

Header: #include <QStandardItemModel>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
Inherits: 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

再リンプルメント: (const QModelIndex &index):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

与えられたflags を使って、与えられたcolumn で、与えられた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

再実装: (const QModelIndex &index) 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

再実装: (int column, Qt::SortOrder order):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()も参照して ください。

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。