QAbstractListModel Class
QAbstractListModel クラスは、一次元リストモデルを作成するためにサブクラス化できる抽象モデルを提供します。詳細...
Header: | #include <QAbstractListModel> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
Inherits: | QAbstractItemModel |
Inherited By: | QPdfLinkModel, QPdfSearchModel, QStringListModel, QVirtualKeyboardSelectionListModel, and 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.
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 ここで提供されるドキュメントは、Free Software Foundation により発行されたGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。