QItemModelBarDataProxy Class

アイテムモデルのデータをQ3DBarsWidgetItem で表示するためのプロキシ・クラスです。もっと見る...

Header: #include <QItemModelBarDataProxy>
CMake: find_package(Qt6 REQUIRED COMPONENTS Graphs)
target_link_libraries(mytarget PRIVATE Qt6::Graphs)
qmake: QT += graphs
In QML: ItemModelBarDataProxy
Inherits: QBarDataProxy

パブリックタイプ

enum class MultiMatchBehavior { First, Last, Average, Cumulative }

プロパティ

パブリック関数

QItemModelBarDataProxy(QObject *parent = nullptr)
QItemModelBarDataProxy(QAbstractItemModel *itemModel, QObject *parent = nullptr)
QItemModelBarDataProxy(QAbstractItemModel *itemModel, const QString &valueRole, QObject *parent = nullptr)
QItemModelBarDataProxy(QAbstractItemModel *itemModel, const QString &rowRole, const QString &columnRole, const QString &valueRole, QObject *parent = nullptr)
QItemModelBarDataProxy(QAbstractItemModel *itemModel, const QString &rowRole, const QString &columnRole, const QString &valueRole, const QString &rotationRole, QObject *parent = nullptr)
QItemModelBarDataProxy(QAbstractItemModel *itemModel, const QString &rowRole, const QString &columnRole, const QString &valueRole, const QStringList &rowCategories, const QStringList &columnCategories, QObject *parent = nullptr)
QItemModelBarDataProxy(QAbstractItemModel *itemModel, const QString &rowRole, const QString &columnRole, const QString &valueRole, const QString &rotationRole, const QStringList &rowCategories, const QStringList &columnCategories, QObject *parent = nullptr)
virtual ~QItemModelBarDataProxy() override
bool autoColumnCategories() const
bool autoRowCategories() const
QStringList columnCategories() const
qsizetype columnCategoryIndex(const QString &category)
QString columnRole() const
QRegularExpression columnRolePattern() const
QString columnRoleReplace() const
QAbstractItemModel *itemModel() const
QItemModelBarDataProxy::MultiMatchBehavior multiMatchBehavior() const
void remap(const QString &rowRole, const QString &columnRole, const QString &valueRole, const QString &rotationRole, const QStringList &rowCategories, const QStringList &columnCategories)
QString rotationRole() const
QRegularExpression rotationRolePattern() const
QString rotationRoleReplace() const
QStringList rowCategories() const
qsizetype rowCategoryIndex(const QString &category)
QString rowRole() const
QRegularExpression rowRolePattern() const
QString rowRoleReplace() const
void setAutoColumnCategories(bool enable)
void setAutoRowCategories(bool enable)
void setColumnCategories(const QStringList &categories)
void setColumnRole(const QString &role)
void setColumnRolePattern(const QRegularExpression &pattern)
void setColumnRoleReplace(const QString &replace)
void setItemModel(QAbstractItemModel *itemModel)
void setMultiMatchBehavior(QItemModelBarDataProxy::MultiMatchBehavior behavior)
void setRotationRole(const QString &role)
void setRotationRolePattern(const QRegularExpression &pattern)
void setRotationRoleReplace(const QString &replace)
void setRowCategories(const QStringList &categories)
void setRowRole(const QString &role)
void setRowRolePattern(const QRegularExpression &pattern)
void setRowRoleReplace(const QString &replace)
void setUseModelCategories(bool enable)
void setValueRole(const QString &role)
void setValueRolePattern(const QRegularExpression &pattern)
void setValueRoleReplace(const QString &replace)
bool useModelCategories() const
QString valueRole() const
QRegularExpression valueRolePattern() const
QString valueRoleReplace() const

シグナル

void autoColumnCategoriesChanged(bool enable)
void autoRowCategoriesChanged(bool enable)
void columnCategoriesChanged()
void columnRoleChanged(const QString &role)
void columnRolePatternChanged(const QRegularExpression &pattern)
void columnRoleReplaceChanged(const QString &replace)
void itemModelChanged(const QAbstractItemModel *itemModel)
void multiMatchBehaviorChanged(QItemModelBarDataProxy::MultiMatchBehavior behavior)
void rotationRoleChanged(const QString &role)
void rotationRolePatternChanged(const QRegularExpression &pattern)
void rotationRoleReplaceChanged(const QString &replace)
void rowCategoriesChanged()
void rowRoleChanged(const QString &role)
void rowRolePatternChanged(const QRegularExpression &pattern)
void rowRoleReplaceChanged(const QString &replace)
void useModelCategoriesChanged(bool enable)
void valueRoleChanged(const QString &role)
void valueRolePatternChanged(const QRegularExpression &pattern)
void valueRoleReplaceChanged(const QString &replace)

詳細説明

QItemModelBarDataProxy を使用すると、Q3DBarsWidgetItem のデータソースとしてQAbstractItemModel 派生モデルを使用することができます。定義されたマッピングを使用して、モデルからのデータをQ3DBarsWidgetItem グラフの行、列、値にマッピングします。

データは、マッピングやモデルが変更されるたびに非同期に解決されます。QBarDataProxy::arrayResetデータが解決されると()が発行されます。ただし、useModelCategories プロパティが true に設定されている場合、同じフレームにモデル全体が解決されるような変更がない限り、単一の項目の変更は同期的に解決されます。

マッピングは以下の方法で使用できます:

  • useModelCategories プロパティが true に設定されている場合、このプロキシはQAbstractItemModel の行と列をQ3DBarsWidgetItem の行と列に直接マッピングし、デフォルトではQt::DisplayRole に対して返される値をバー値として使用します。Qt::DisplayRole が適切でない場合は、使用する値の役割を再定義することができます。
  • QAbstractListModel ベースのモデルのように、データが行と列にきれいにソートされていないモデルの場合、行、列、値のそれぞれに対して、マップするモデルのロールを定義することができます。
  • モデルに含まれるすべてのデータを含めたくない場合、あるいは自動生成された行と列が思い通りに並べられない場合、行と列のどちらか、あるいは両方に明示的なカテゴリのリストを定義することで、どの行と列をどの順番で含めるべきかを指定することができます。

例えば、ビジネスに関連するさまざまな月次値を格納するカスタムQAbstractItemModel があるとします。モデルの各項目は、"year"、"month"、"income"、"expenses "の役割を持ちます。データを棒グラフで表示するには、以下のようにします:

// By defining row and column categories, you tell the mapping which row and column each item
// belongs to. The categories must match the data stored in the model in the roles you define
// for row and column mapping. In this example we expect "year" role to return four digit year
// and "month" to return three letter designation for the month.
//
// An example of an item in model would be:
// Requested role -> Returned data
// "year" -> "2016" // Matches the first row category, so this item is added to the first row.
// "month" -> "jan" // Matches the first column category, so this item is added as first item in the row.
// "income" -> "12.1"
// "expenses" -> "9.2"
QStringList years;
QStringList months;
years << "2016" << "2017" << "2018" << "2019" << "2020" << "2021" << "2022";
months << "jan" << "feb" << "mar" << "apr" << "may" << "jun" << "jul" << "aug" << "sep" << "oct" << "nov" << "dec";

QItemModelBarDataProxy *proxy = new QItemModelBarDataProxy(customModel,
                                                           QStringLiteral("year"), // Row role
                                                           QStringLiteral("month"), // Column role
                                                           QStringLiteral("income"), // Value role
                                                           years, // Row categories
                                                           months); // Column categories

//...

// To display different data later, you can simply change the mapping.
proxy->setValueRole(QStringLiteral("expenses"));

モデルのフィールドに必要な形式のデータが含まれていない場合、検索パターンの正規表現と各ロールの置換ルールを指定して、必要な形式の値を取得することができます。正規表現を使用した置換がどのように機能するかについては、QString::replace(constQRegularExpression &rx, constQString &after)関数のドキュメントを参照してください。正規表現の使用はパフォーマンスに影響を与えるので、検索と置換を行う必要がない項目モデルを利用する方が、目的の値を得るために効率的であることに注意してください。

検索パターンとロールの併用については、シンプルな棒グラフを参照してください。

Qt グラフの 3D によるデータ処理も参照してください

メンバ型のドキュメント

enum class QItemModelBarDataProxy::MultiMatchBehavior

QItemModelBarDataProxy::multiMatchBehavior プロパティの振る舞いタイプ。

定数説明
QItemModelBarDataProxy::MultiMatchBehavior::First0値は、各行/列の組み合わせに一致する項目モデルの最初の項目から取得されます。
QItemModelBarDataProxy::MultiMatchBehavior::Last1値は、各行/列の組み合わせに一致する項目モデルの最後の項目から取得されます。
QItemModelBarDataProxy::MultiMatchBehavior::Average2各行/列の組み合わせにマッチするすべての項目からの値が平均され、その平均がバー値として使用される。
QItemModelBarDataProxy::MultiMatchBehavior::Cumulative3各行/列の組み合わせに一致するすべての項目からの値が合計され、その合計が棒の値として使用される。

プロパティ Documentation

autoColumnCategories : bool

このプロパティは、列カテゴリが自動的に生成されるかどうかを保持する。

true に設定すると、マッピングは明示的に設定された列カテゴリを無視し、モデルからのデータが解決されるたびに自動的に生成されたもので上書きします。デフォルトはtrue です。

アクセス関数:

bool autoColumnCategories() const
void setAutoColumnCategories(bool enable)

通知シグナル:

void autoColumnCategoriesChanged(bool enable)

autoRowCategories : bool

このプロパティは、行カテゴリが自動的に生成されるかどうかを保持します。

true に設定すると、マッピングは明示的に設定された行カテゴリを無視し、モデルからのデータが解決されるたびに自動的に生成されたもので上書きします。デフォルトはtrue です。

アクセス関数:

bool autoRowCategories() const
void setAutoRowCategories(bool enable)

通知シグナル:

void autoRowCategoriesChanged(bool enable)

columnCategories : QStringList

このプロパティは、マッピングの列カテゴリを保持します。

アクセス関数:

QStringList columnCategories() const
void setColumnCategories(const QStringList &categories)

通知シグナル:

void columnCategoriesChanged()

columnRole : QString

このプロパティはマッピングのカラムの役割を保持します。

アクセス関数:

QString columnRole() const
void setColumnRole(const QString &role)

ノーティファイア・シグナル:

void columnRoleChanged(const QString &role)

columnRolePattern : QRegularExpression

このプロパティは、列ロールによってマッピングされた値を列カテゴリとして使用する前に、検索と置換を行うかどうかを保持します。

このプロパティは、マッピングされた値の置換する部分を検索するための正規表現を指定し、columnRoleReplace プロパティは置換文字列を保持します。これは、例えば、項目モデルの単一のタイムスタンプフィールドから行および列カテゴリを解析する際に便利です。

アクセス関数:

QRegularExpression columnRolePattern() const
void setColumnRolePattern(const QRegularExpression &pattern)

通知シグナル:

void columnRolePatternChanged(const QRegularExpression &pattern)

columnRole およびcolumnRoleReplaceも参照してください

columnRoleReplace : QString

このプロパティは、columnRolePattern と組み合わせて使用する置換内容を保持します。

デフォルトは空文字列です。正規表現による検索置換の動作の詳細については、QString::replace(constQRegularExpression &rx, constQString &after)関数のドキュメントを参照してください。

アクセス関数:

QString columnRoleReplace() const
void setColumnRoleReplace(const QString &replace)

通知シグナル:

void columnRoleReplaceChanged(const QString &replace)

columnRole およびcolumnRolePatternも参照して ください。

itemModel : QAbstractItemModel*

このプロパティはアイテムモデルを保持する。

アクセス関数:

QAbstractItemModel *itemModel() const
void setItemModel(QAbstractItemModel *itemModel)

ノーティファイアシグナル:

void itemModelChanged(const QAbstractItemModel *itemModel)

multiMatchBehavior : QItemModelBarDataProxy::MultiMatchBehavior

各行/列の組み合わせに対する複数の一致の処理方法。

QItemModelBarDataProxy::MultiMatchBehavior::Last選択した動作は、バーの値と回転の両方に影響します。

例えば、不規則な間隔で取得されたタイムスタンプ付きデータを持つ項目モデルがあり、各日のデータ項目の合計値を棒グラフで可視化したいとします。これは、各バーが1日を表すように行と列のカテゴリを指定し、multiMatchBehavior をQItemModelBarDataProxy::MultiMatchBehavior::Cumulative に設定することで実現できます。

アクセス関数:

QItemModelBarDataProxy::MultiMatchBehavior multiMatchBehavior() const
void setMultiMatchBehavior(QItemModelBarDataProxy::MultiMatchBehavior behavior)

通知シグナル:

void multiMatchBehaviorChanged(QItemModelBarDataProxy::MultiMatchBehavior behavior)

rotationRole : QString

このプロパティは、マッピングの回転ロールを保持する。

アクセス関数:

QString rotationRole() const
void setRotationRole(const QString &role)

通知シグナル:

void rotationRoleChanged(const QString &role)

rotationRolePattern : QRegularExpression

このプロパティは、回転ロールによってマッピングされた値が棒の回転角度として使用される前に、検索と置換が行われるかどうかを保持する。

このプロパティは、マッピングされた値の置換する部分を検索するための正規表現を指定し、rotationRoleReplace プロパティには置換文字列が格納されます。

アクセス関数:

QRegularExpression rotationRolePattern() const
void setRotationRolePattern(const QRegularExpression &pattern)

Notifier シグナル:

void rotationRolePatternChanged(const QRegularExpression &pattern)

rotationRole およびrotationRoleReplaceも参照のこと

rotationRoleReplace : QString

このプロパティは、rotationRolePattern と組み合わせて使用する置換内容を保持する。

デフォルトは空文字列。正規表現による検索置換の動作の詳細については、QString::replace(constQRegularExpression &rx, constQString &after)関数のドキュメントを参照してください。

アクセス関数:

QString rotationRoleReplace() const
void setRotationRoleReplace(const QString &replace)

通知シグナル:

void rotationRoleReplaceChanged(const QString &replace)

rotationRole およびrotationRolePatternも参照のこと

rowCategories : QStringList

このプロパティは、マッピングの行カテゴリを保持します。

アクセス関数:

QStringList rowCategories() const
void setRowCategories(const QStringList &categories)

通知シグナル:

void rowCategoriesChanged()

rowRole : QString

このプロパティは、マッピングの行ロールを保持します。

アクセス関数:

QString rowRole() const
void setRowRole(const QString &role)

通知シグナル:

void rowRoleChanged(const QString &role)

rowRolePattern : QRegularExpression

このプロパティは、行カテゴリとして使用される前に、行ロールでマッピングされた値に対して検索と置換が実行されるかどうかを保持する。

このプロパティは、マップされた値の置換する部分を検索するための正規表現を指定し、rowRoleReplace プロパティには置換文字列が格納されます。これは、例えば項目モデル内の単一のタイムスタンプフィールドから行および列カテゴリを解析する際に便利です。

アクセス関数:

QRegularExpression rowRolePattern() const
void setRowRolePattern(const QRegularExpression &pattern)

通知シグナル:

void rowRolePatternChanged(const QRegularExpression &pattern)

rowRole およびrowRoleReplaceも参照してください

rowRoleReplace : QString

このプロパティは、rowRolePattern と組み合わせて使用する置換内容を保持します。

デフォルトは空文字列です。正規表現による検索置換の動作の詳細については、QString::replace(constQRegularExpression &rx, constQString &after)関数のドキュメントを参照してください。

アクセス関数:

QString rowRoleReplace() const
void setRowRoleReplace(const QString &replace)

通知シグナル:

void rowRoleReplaceChanged(const QString &replace)

rowRole およびrowRolePatternも参照して ください。

useModelCategories : bool

このプロパティは、行と列のロールとカテゴリをマッピングに使用するかどうかを保持します。

true に設定すると、マッピングは行と列のロールとカテゴリを無視し、代わりにモデルからの行と列を使用します。デフォルトはfalse です。

アクセス関数:

bool useModelCategories() const
void setUseModelCategories(bool enable)

Notifier シグナル:

void useModelCategoriesChanged(bool enable)

valueRole : QString

このプロパティは、マッピングの値ロールを保持します。

アクセス関数:

QString valueRole() const
void setValueRole(const QString &role)

ノーティファイアシグナル:

void valueRoleChanged(const QString &role)

valueRolePattern : QRegularExpression

このプロパティは、値の役割によってマッピングされた値をバー値として使用する前に、検索と置換を行うかどうかを保持します。

このプロパティは、マップされた値の置換する部分を検索するための正規表現を指定し、valueRoleReplace プロパティには置換文字列が格納されます。

アクセス関数:

QRegularExpression valueRolePattern() const
void setValueRolePattern(const QRegularExpression &pattern)

Notifier シグナル:

void valueRolePatternChanged(const QRegularExpression &pattern)

valueRole およびvalueRoleReplaceも参照のこと

valueRoleReplace : QString

このプロパティは、valueRolePattern と組み合わせて使用する置換内容を保持する。

デフォルトは空文字列。正規表現による検索置換の動作の詳細については、QString::replace(constQRegularExpression &rx, constQString &after)関数のドキュメントを参照してください。

アクセス関数:

QString valueRoleReplace() const
void setValueRoleReplace(const QString &replace)

通知シグナル:

void valueRoleReplaceChanged(const QString &replace)

valueRole およびvalueRolePatternも参照のこと

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

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

QItemModelBarDataProxy を、オプションのparent で構築します。

[explicit] QItemModelBarDataProxy::QItemModelBarDataProxy(QAbstractItemModel *itemModel, QObject *parent = nullptr)

QItemModelBarDataProxy をitemModel とオプションのparent で構築します。通常、項目モデルは他のコントロールによって所有されるため、プロキシはitemModel の所有権を取りません。

[explicit] QItemModelBarDataProxy::QItemModelBarDataProxy(QAbstractItemModel *itemModel, const QString &valueRole, QObject *parent = nullptr)

itemModel とオプションのparent で QItemModelBarDataProxy を構築します。通常、項目モデルは他のコントロールによって所有されるため、プロキシはitemModel の所有権を取りません。値の役割にはvalueRole が設定されます。このコンストラクタは、すでに行と列で適切にソートされたデータを持つモデルで使用されることを意図しているため、useModelCategories プロパティも true に設定されます。

[explicit] QItemModelBarDataProxy::QItemModelBarDataProxy(QAbstractItemModel *itemModel, const QString &rowRole, const QString &columnRole, const QString &valueRole, QObject *parent = nullptr)

QItemModelBarDataProxy をitemModel とオプションのparent で構築します。通常、アイテムモデルは他のコントロールによって所有されるため、プロキシはitemModel の所有権を持ちません。役割マッピングはrowRole,columnRole,valueRole で設定されます。

[explicit] QItemModelBarDataProxy::QItemModelBarDataProxy(QAbstractItemModel *itemModel, const QString &rowRole, const QString &columnRole, const QString &valueRole, const QString &rotationRole, QObject *parent = nullptr)

QItemModelBarDataProxy をitemModel とオプションのparent で構築します。通常、アイテムモデルは他のコントロールによって所有されるため、プロキシはitemModel の所有権を持ちません。役割マッピングはrowRole,columnRole,valueRole,rotationRole で設定されます。

[explicit] QItemModelBarDataProxy::QItemModelBarDataProxy(QAbstractItemModel *itemModel, const QString &rowRole, const QString &columnRole, const QString &valueRole, const QStringList &rowCategories, const QStringList &columnCategories, QObject *parent = nullptr)

QItemModelBarDataProxy をitemModel とオプションのparent で構築します。通常、アイテム・モデルは他のコントロールによって所有されるため、プロキシはitemModel の所有権を持ちません。役割マッピングは、rowRolecolumnRolevalueRole で設定されます。行と列のカテゴリはrowCategoriescolumnCategories で設定されます。このコンストラクタはまた、autoRowCategoriesautoColumnCategories を false に設定します。

[explicit] QItemModelBarDataProxy::QItemModelBarDataProxy(QAbstractItemModel *itemModel, const QString &rowRole, const QString &columnRole, const QString &valueRole, const QString &rotationRole, const QStringList &rowCategories, const QStringList &columnCategories, QObject *parent = nullptr)

QItemModelBarDataProxy をitemModel とオプションのparent で構築します。通常、項目モデルは他のコントロールによって所有されるため、プロキシはitemModel の所有権を取りません。役割マッピングはrowRole,columnRole,valueRole,rotationRole で設定されます。行と列のカテゴリはrowCategoriescolumnCategories で設定されます。このコンストラクタはautoRowCategoriesautoColumnCategories も false に設定します。

[override virtual noexcept] QItemModelBarDataProxy::~QItemModelBarDataProxy()

QItemModelBarDataProxy を破棄します。

[invokable] qsizetype QItemModelBarDataProxy::columnCategoryIndex(const QString &category)

列カテゴリーリスト中の指定されたcategory のインデックスを返します。カテゴリが見つからない場合は、-1が返されます。

注意 : 列カテゴリの自動生成が使用されている場合、モデル内のデータが初めて解決される前に、このメソッドは有効なインデックスを返しません。

注意: この関数はメタオブジェクトシステムやQMLから呼び出すことができます。Q_INVOKABLE を参照してください。

void QItemModelBarDataProxy::remap(const QString &rowRole, const QString &columnRole, const QString &valueRole, const QString &rotationRole, const QStringList &rowCategories, const QStringList &columnCategories)

rowRole,columnRole,valueRole,rotationRole,rowCategories およびcolumnCategories をマッピングに変更します。

[invokable] qsizetype QItemModelBarDataProxy::rowCategoryIndex(const QString &category)

行カテゴリリスト中の指定されたcategory のインデックスを返します。行カテゴリリストが空の場合、-1が返される。

注意 : 行カテゴリの自動生成が使用されている場合、モデル内のデータが初めて解決される前に、このメソッドは有効なインデックスを返しません。

注意: この関数はメタオブジェクトシステムやQMLから呼び出すことができます。Q_INVOKABLE を参照してください。

void QItemModelBarDataProxy::setItemModel(QAbstractItemModel *itemModel)

アイテムモデルをitemModel に設定します。この関数はモデルの所有権を持ちませんが、モデルへの接続を行い、モデルの変更を待ちます。

注: プロパティのセッター関数itemModel

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

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