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 |
- 継承されたメンバーを含むすべてのメンバーの一覧
- QItemModelBarDataProxyは、Qt Graphs の3D用C++クラスの一部です。
パブリック型
| 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::First | 0 | 値は、各行と列の組み合わせに一致するアイテム モデルの最初の項目から取得されます。 |
QItemModelBarDataProxy::MultiMatchBehavior::Last | 1 | 値は、各行と列の組み合わせに一致するアイテム モデルの最後の項目から取得されます。 |
QItemModelBarDataProxy::MultiMatchBehavior::Average | 2 | 各行と列の組み合わせに一致するすべての項目の値を平均化し、その平均値を棒グラフの値として使用します。 |
QItemModelBarDataProxy::MultiMatchBehavior::Cumulative | 3 | 各行と列の組み合わせに一致するすべての項目の値を合計し、その合計値を棒グラフの値として使用します。 |
プロパティのドキュメント
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.