QIdentityProxyModel Class

QIdentityProxyModel クラスは、ソースモデルを変更せずにプロキシします。詳細...

Header: #include <QIdentityProxyModel>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Inherits: QAbstractProxyModel

パブリック関数

QIdentityProxyModel(QObject *parent = nullptr)
virtual ~QIdentityProxyModel()
(since 6.8) bool handleSourceDataChanges() const
(since 6.8) bool handleSourceLayoutChanges() const

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

virtual int columnCount(const QModelIndex &parent = QModelIndex()) const override
virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) 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 QModelIndex mapFromSource(const QModelIndex &sourceIndex) const override
virtual QItemSelection mapSelectionFromSource(const QItemSelection &selection) const override
virtual QItemSelection mapSelectionToSource(const QItemSelection &selection) const override
virtual QModelIndex mapToSource(const QModelIndex &proxyIndex) const override
virtual QModelIndexList match(const QModelIndex &start, int role, const QVariant &value, int hits = 1, Qt::MatchFlags flags = Qt::MatchFlags(Qt::MatchStartsWith|Qt::MatchWrap)) const override
virtual bool moveColumns(const QModelIndex &sourceParent, int sourceColumn, int count, const QModelIndex &destinationParent, int destinationChild) override
virtual bool moveRows(const QModelIndex &sourceParent, int sourceRow, int count, const QModelIndex &destinationParent, int destinationChild) 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 int rowCount(const QModelIndex &parent = QModelIndex()) const override
virtual void setSourceModel(QAbstractItemModel *newSourceModel) override
virtual QModelIndex sibling(int row, int column, const QModelIndex &idx) const override

保護された関数

(since 6.8) void setHandleSourceDataChanges(bool b)
(since 6.8) void setHandleSourceLayoutChanges(bool b)

詳細説明

QIdentityProxyModel は、ソート、フィルタリング、その他の変換を行わずに、ソースモデルの構造を正確に転送するために使用することができます。これは、A.I = A となる同一行列に似た概念です。

ソートやフィルタリングを行わないため、このクラスはソースモデルのdata() を変換するプロキシモデルに最も適しています。例えば、使用するフォントや背景色、ツールチップなどを定義するプロキシモデルを作成することができます。これによって、モデルの構造を作成するのと同じクラスで全てのデータ処理を実装する必要性がなくなり、再利用可能なコンポーネントを作成するためにも使うことができます。

これはまた、ソースモデルがサードパーティから提供され、変更できない場合にデータを変更する方法を提供します。

class DateFormatProxyModel : public QIdentityProxyModel
{
  // ...

  void setDateFormatString(const QString &formatString)
  {
    m_formatString = formatString;
  }

  QVariant data(const QModelIndex &index, int role) const override
  {
    if (role != Qt::DisplayRole)
      return QIdentityProxyModel::data(index, role);

    const QDateTime dateTime = sourceModel()->data(SourceClass::DateRole).toDateTime();
    return dateTime.toString(m_formatString);
  }

  QMap<int, QVariant> itemData(const QModelIndex &proxyIndex) const override
  {
      QMap<int, QVariant> map = QIdentityProxyModel::itemData(proxyIndex);
      map[Qt::DisplayRole] = data(proxyIndex);
      return map;
  }

private:
  QString m_formatString;
};

QAbstractProxyModelモデル/ビュー・プログラミングQAbstractItemModelも参照して ください。

メンバ関数 ドキュメント

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

与えられたparent で ID モデルを構築する。

[virtual noexcept] QIdentityProxyModel::~QIdentityProxyModel()

この ID モデルを破棄します。

[override virtual] int QIdentityProxyModel::columnCount(const QModelIndex &parent = QModelIndex()) const

再実装:QAbstractItemModel::columnCount(const QModelIndex &parent) const.

[override virtual] bool QIdentityProxyModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)

再インプリメント:QAbstractProxyModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)。

[since 6.8] bool QIdentityProxyModel::handleSourceDataChanges() const

このプロキシモデルがソースモデルのデータ変更を処理する場合はtrue を返し、そうでない場合はfalse を返します。

この関数は Qt 6.8 で導入されました。

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

[since 6.8] bool QIdentityProxyModel::handleSourceLayoutChanges() const

このプロキシモデルがソースモデルのレイアウト変更を扱う場合はtrue を返し、そうでない場合はfalse を返します。

この関数は Qt 6.8 で導入されました。

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

[override virtual] QVariant QIdentityProxyModel::headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const

再実装:QAbstractProxyModel::headerData(int section, Qt::Orientation orientation, int role) const.

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

再実装:QAbstractItemModel::index(int row, int column, const QModelIndex &parent) const.

[override virtual] bool QIdentityProxyModel::insertColumns(int column, int count, const QModelIndex &parent = QModelIndex())

再実装:QAbstractItemModel::insertColumns(int column, int count, const QModelIndex &parent) const.

[override virtual] bool QIdentityProxyModel::insertRows(int row, int count, const QModelIndex &parent = QModelIndex())

再インプリメント:QAbstractItemModel::insertRows(int row, int count, const QModelIndex &parent).

[override virtual] QModelIndex QIdentityProxyModel::mapFromSource(const QModelIndex &sourceIndex) const

再実装:(int row, int count, const QModelIndex &parent):QAbstractProxyModel::mapFromSource(const QModelIndex &sourceIndex) const.

[override virtual] QItemSelection QIdentityProxyModel::mapSelectionFromSource(const QItemSelection &selection) const

再実装:QAbstractProxyModel::mapSelectionFromSource(const QItemSelection &sourceSelection) const.

[override virtual] QItemSelection QIdentityProxyModel::mapSelectionToSource(const QItemSelection &selection) const

再実装:QAbstractProxyModel::mapSelectionToSource(const QItemSelection &proxySelection) const.

[override virtual] QModelIndex QIdentityProxyModel::mapToSource(const QModelIndex &proxyIndex) const

再実装:QAbstractProxyModel::mapToSource(const QModelIndex &proxyIndex) const.

[override virtual] QModelIndexList QIdentityProxyModel::match(const QModelIndex &start, int role, const QVariant &value, int hits = 1, Qt::MatchFlags flags = Qt::MatchFlags(Qt::MatchStartsWith|Qt::MatchWrap)) const

再実装:QAbstractItemModel::match(const QModelIndex &start, int role, const QVariant &value, int hits, Qt::MatchFlags flags) const.

[override virtual] bool QIdentityProxyModel::moveColumns(const QModelIndex &sourceParent, int sourceColumn, int count, const QModelIndex &destinationParent, int destinationChild)

再インプリメント:QAbstractItemModel::moveColumns(const QModelIndex &sourceParent, int sourceColumn, int count, const QModelIndex &destinationParent, int destinationChild)。

[override virtual] bool QIdentityProxyModel::moveRows(const QModelIndex &sourceParent, int sourceRow, int count, const QModelIndex &destinationParent, int destinationChild)

再インプリメント:QAbstractItemModel::moveRows(const QModelIndex &sourceParent, int sourceRow, int count, const QModelIndex &destinationParent, int destinationChild)。

[override virtual] QModelIndex QIdentityProxyModel::parent(const QModelIndex &child) const

再インプリメント:QAbstractItemModel::parent(const QModelIndex &index) const.

[override virtual] bool QIdentityProxyModel::removeColumns(int column, int count, const QModelIndex &parent = QModelIndex())

再インプリメント:QAbstractItemModel::removeColumns(int column, int count, const QModelIndex &parent).

[override virtual] bool QIdentityProxyModel::removeRows(int row, int count, const QModelIndex &parent = QModelIndex())

再実装: (int row, int count, const QModelIndex &parent):QAbstractItemModel::removeRows(int row, int count, const QModelIndex &parent).

[override virtual] int QIdentityProxyModel::rowCount(const QModelIndex &parent = QModelIndex()) const

再実装:(int row, int count, const QModelIndex &parent):QAbstractItemModel::rowCount(const QModelIndex &parent) const.

[protected, since 6.8] void QIdentityProxyModel::setHandleSourceDataChanges(bool b)

btrue の場合、このプロキシモデルは(QAbstractItemModel::dataChanged シグナルに接続して)ソースモデルのデータ変更を処理します。

デフォルトでは、このプロキシ・モデルがソース・モデルのデータ変更を処理します。

QIdentityProxyModel のサブクラスでは、ソース・モデルのデータ変更を特別に処理する必要がある場合、これをfalse に設定すると便利です。

注意: このメソッドの呼び出しは、setSourceModel() を呼び出した後にのみ効果があります。

この関数は Qt 6.8 で導入されました。

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

[protected, since 6.8] void QIdentityProxyModel::setHandleSourceLayoutChanges(bool b)

btrue の場合、このプロキシモデルは(QAbstractItemModel::layoutAboutToBeChangedQAbstractItemModel::layoutChanged のシグナルに接続して)ソースモデルのレイアウト変更を処理します。

デフォルトでは、このプロキシモデルがソースモデルのレイアウト変更を処理します。

QIdentityProxyModel のサブクラスでは、ソース・モデルのレイアウト変更を特別に処理する必要がある場合、これをfalse に設定すると便利です。

注意: このメソッドの呼び出しは、setSourceModel() を呼び出した後にのみ効果があります。

この関数は Qt 6.8 で導入されました。

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

[override virtual] void QIdentityProxyModel::setSourceModel(QAbstractItemModel *newSourceModel)

再実装:QAbstractProxyModel::setSourceModel(QAbstractItemModel *sourceModel)。

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

再インプリメント:QAbstractProxyModel::sibling(int row, int column, const QModelIndex &idx) const.

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