このページでは

QItemModelBarDataProxy Class

Q3DBarsWidgetItem を使用して、アイテムモデル内のデータを表示するためのプロキシクラス。詳細...

ヘッダー: #include <QItemModelBarDataProxy>
CMake: find_package(Qt6 REQUIRED COMPONENTS Graphs)
target_link_libraries(mytarget PRIVATE Qt6::Graphs)
qmake: QT += graphs
QML内: ItemModelBarDataProxy
継承元: 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 を使用すると、QAbstractItemModel を継承したモデルを、Q3DBarsWidgetItem のデータソースとして利用できます。これは、定義されたマッピングを使用して、モデルからのデータをQ3DBarsWidgetItem グラフの行、列、および値にマッピングします。

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

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

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

たとえば、ビジネスに関連するさまざまな月次値を格納するためのカスタムQAbstractItemModel があるとします。モデル内の各項目には、「年」、「月」、「収入」、「支出」というロールがあります。データを棒グラフで表示するには、次のようにします。

// 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) 関数のドキュメントを参照してください。なお、正規表現の使用はパフォーマンスに影響を与えるため、目的の値を取得するために検索や置換が不要なアイテムモデルを利用するのがより効率的です。

たとえば、検索パターンをロールと組み合わせて使用する方法については、「Simple Bar Graph」を参照してください。

「Qt Graphs 」 の「3D でのデータ処理」も参照してください 。

メンバー型に関するドキュメント

enum class QItemModelBarDataProxy::MultiMatchBehavior

QItemModelBarDataProxy::multiMatchBehavior プロパティの挙動タイプ。

定数値説明
QItemModelBarDataProxy::MultiMatchBehavior::First0値は、各行と列の組み合わせに一致するアイテム モデルの最初の項目から取得されます。
QItemModelBarDataProxy::MultiMatchBehavior::Last1値は、各行と列の組み合わせに一致するアイテム モデルの最後の項目から取得されます。
QItemModelBarDataProxy::MultiMatchBehavior::Average2各行と列の組み合わせに一致するすべての項目の値を平均化し、その平均値を棒グラフの値として使用します。
QItemModelBarDataProxy::MultiMatchBehavior::Cumulative3各行と列の組み合わせに一致するすべての項目の値を合計し、その合計値を棒グラフの値として使用します。

プロパティのドキュメント

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)

Notifierシグナル:

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)

Notifierシグナル:

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)

通知シグナル:

void rotationRolePatternChanged(const QRegularExpression &pattern)

関連項目: ` rotationRole ` および `rotationRoleReplace`。

rotationRoleReplace : QString

このプロパティには、rotationRolePattern と組み合わせて使用される置換内容が格納されます。

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

アクセス関数:

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

Notifierシグナル:

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)

Notifierシグナル:

void rowRoleReplaceChanged(const QString &replace)

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

useModelCategories : bool

このプロパティは、マッピングに行および列のロールとカテゴリが使用されるかどうかを指定します。

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

アクセス関数:

bool useModelCategories() const
void setUseModelCategories(bool enable)

通知シグナル:

void useModelCategoriesChanged(bool enable)

valueRole : QString

このプロパティは、マッピングにおける「role」の値を保持します。

アクセス関数:

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

通知シグナル:

void valueRoleChanged(const QString &role)

valueRolePattern : QRegularExpression

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

このプロパティは、置換対象となるマッピング済み値の部分を検索するための正規表現を指定し、valueRoleReplace プロパティには置換文字列が含まれます。

アクセス関数:

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

通知シグナル:

void valueRolePatternChanged(const QRegularExpression &pattern)

関連項目: valueRole およびvalueRoleReplace 。

valueRoleReplace : QString

このプロパティには、valueRolePattern と組み合わせて使用する置換内容が格納されます。

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

アクセス関数:

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

Notifierシグナル:

void valueRoleReplaceChanged(const QString &replace)

「 valueRole 」および「valueRolePattern 」も参照してください 。

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

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

オプションのparent を指定して、QItemModelBarDataProxyを生成します。

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

itemModel と、オプションのparent を使用して、QItemModelBarDataProxyを構築します。通常、アイテムモデルは他のコントロールによって所有されているため、このプロキシはitemModel の所有権を取得しません。

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

itemModel と、オプションのparent を指定して、QItemModelBarDataProxyを生成します。通常、アイテムモデルは他のコントロールによって所有されているため、このプロキシはitemModel の所有権を取得しません。valueロールはvalueRole に設定されます。このコンストラクタは、データがすでに行と列で適切にソートされているモデルで使用することを想定しているため、useModelCategories プロパティもtrueに設定されます。

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

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

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

itemModel と、オプションのparent を使用して、QItemModelBarDataProxyを構築します。通常、アイテムモデルは他のコントロールによって所有されているため、このプロキシは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)

itemModel と、オプションのparent を引数として、QItemModelBarDataProxyを生成します。通常、アイテムモデルは他のコントロールによって所有されているため、このプロキシはitemModel の所有権を取得しません。ロールのマッピングは、rowRole 、columnRole 、およびvalueRole で設定されます。行および列のカテゴリは、rowCategories およびcolumnCategories で設定されます。また、このコンストラクタでは、autoRowCategories およびautoColumnCategories を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)

itemModel およびオプションのparent を使用して、QItemModelBarDataProxyを構築します。通常、アイテムモデルは他のコントロールによって所有されているため、このプロキシはitemModel の所有権を取得しません。ロールのマッピングは、rowRole 、columnRole 、valueRole 、およびrotationRole で設定されます。行および列のカテゴリは、rowCategories およびcolumnCategories で設定されます。また、このコンストラクタでは、autoRowCategories およびautoColumnCategories を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()。

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