このページでは

QAbstractListModel Class

QAbstractListModel クラスは、1次元リストモデルを作成するためにサブクラス化できる抽象モデルを提供します。詳細...

ヘッダー: #include <QAbstractListModel>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
継承元: QAbstractItemModel
継承元:

QPdfLinkModel、QPdfSearchModel 、QStringListModel 、QVirtualKeyboardSelectionListModel 、およびQWebEngineHistoryModel

パブリック関数

QAbstractListModel(QObject *parent = nullptr)
virtual ~QAbstractListModel()

再実装されたパブリック関数

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 QModelIndex index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const override
virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const override

詳細な説明

QAbstractListModel は、データを単純な非階層的な項目のシーケンスとして表現するモデル向けの標準インターフェースを提供します。これは直接使用されるものではなく、サブクラス化する必要があります。

このモデルは、QAbstractItemModel よりも特殊なインターフェースを提供するため、ツリービューでの使用には適していません。その目的でモデルを提供したい場合は、QAbstractItemModel をサブクラス化する必要があります。データを管理するために複数のリストモデルを使用する必要がある場合は、代わりにQAbstractTableModel をサブクラス化する方が適切かもしれません。

このクラスをサブクラス化し、必要最小限の関数を実装することで、単純なモデルを作成できます。 例えば、QListView ウィジェットに文字列のリストを提供する、QStringList を基にした単純な読み取り専用モデルを実装することができます。その場合、リスト内の項目数を返すrowCount()関数と、リストから項目を取得するdata()関数を実装するだけで済みます。

このモデルは1次元の構造を表しているため、rowCount()関数はモデル内のアイテムの総数を返します。columnCount()関数は、あらゆる種類のビューとの相互運用性のために実装されていますが、デフォルトでは、モデルが1つの列のみを含むことをビューに通知します。

サブクラス化

QAbstractListModel をサブクラス化する場合は、rowCount() およびdata() 関数の実装を必ず提供する必要があります。適切に動作するモデルでは、headerData() の実装も提供します。

モデルがQML内で使用され、roleNames()関数が提供するデフォルトのロール以外のロールが必要な場合は、この関数をオーバーライドする必要があります。

編集可能なリストモデルの場合、setData() の実装も提供し、flags() 関数を、Qt::ItemIsEditable を含む値を返すように実装する必要があります。

なお、QAbstractListModel はcolumnCount() のデフォルトの実装を提供しており、このモデルには項目が 1 列しか存在しないことをビューに通知します。

サイズ変更可能なリストのようなデータ構造へのインターフェースを提供するモデルは、insertRows() およびremoveRows() の実装を提供できます。これらの関数を実装する際は、接続されたすべてのビューが変更を認識できるように、適切な関数を呼び出すことが重要です:

注: モデルのサブクラス化に関する一般的なガイドラインについては 、『モデルサブクラス化リファレンス』を参照してください。

「モデルクラス」、「モデルサブクラス化リファレンス」、「QAbstractItemView 」、「QAbstractTableModel 」、および「QRangeModel 」も参照してください 。

メンバ関数のドキュメント

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

指定されたparent を用いて、抽象的なリストモデルを構築します。

[virtual noexcept] QAbstractListModel::~QAbstractListModel()

抽象リストモデルを破棄します。

[override virtual] bool QAbstractListModel::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)を再実装します。

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

QAbstractItemModel::flags(const QModelIndex &index) const を再実装します。

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

QAbstractItemModel::index(int row, int column, const QModelIndex &parent) const を再実装します。

parent を使用して、row およびcolumn 内のデータのインデックスを返します。

parent()も参照してください 。

[override virtual] QModelIndex QAbstractListModel::sibling(int row, int column, const QModelIndex &idx) const

QAbstractItemModel::sibling (int row, int column, const QModelIndex &index)const を再実装します。

© 2026 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.