QAbstractListModel Class
QAbstractListModel クラスは、一次元リストモデルを作成するためにサブクラス化できる抽象モデルを提供します。詳細...
ヘッダー | #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() の実装を提供することができます。これらの関数を実装する場合、接続されているすべてのビューが変更を認識できるように、適切な関数を呼び出すことが重要です:
- insertRows() の実装では、データ構造に新しい行を挿入する前に beginInsertRows() を呼び出す必要があり、その直後に endInsertRows() を呼び出す必要がある。
- removeRows() の実装では、データ構造から行が削除される前に beginRemoveRows() を呼び出し、その直後に endRemoveRows() を呼び出す必要があります。
注釈 モデルのサブクラス化に関する一般的なガイドラインは、モデル・サブクラス化リファレンスにあります。
モデル・クラス、モデル・サブクラス化リファレンス、QAbstractItemView 、およびQAbstractTableModelも参照してください 。
メンバ関数のドキュメント
[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.
row とcolumn のデータのインデックスをparent と共に返します。
parent()も参照してください 。
[override virtual]
QModelIndex QAbstractListModel::sibling(int row, int column, const QModelIndex &idx) const
再実装:QAbstractItemModel::sibling(int row, int column, const QModelIndex &index) const.
© 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.