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 C++ Classes for 3D に含まれます。
パブリックタイプ
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 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) |
通知シグナル:
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) |
通知シグナル:
void | useModelCategoriesChanged(bool enable) |
valueRole : QString
このプロパティはマッピングの値ロールを保持する。
アクセス関数:
QString | valueRole() const |
void | setValueRole(const QString &role) |
通知シグナル
void | valueRoleChanged(const QString &role) |
valueRolePattern : QRegularExpression
このプロパティは、value ロールによってマップされた値がバー値として使用される前に、検索と置換が行われるかどうかを保持する。
このプロパティは、マップされた値の置換する部分を検索するための正規表現を指定し、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)
オプションでparent を持つ QItemModelBarDataProxy を構築します。
[explicit]
QItemModelBarDataProxy::QItemModelBarDataProxy(QAbstractItemModel *itemModel, QObject *parent = nullptr)
QItemModelBarDataProxy をitemModel とオプションのparent で構築します。通常、項目モデルは他のコントロールによって所有されるため、プロキシはitemModel の所有権を持ちません。
[explicit]
QItemModelBarDataProxy::QItemModelBarDataProxy(QAbstractItemModel *itemModel, const QString &valueRole, QObject *parent = nullptr)
QItemModelBarDataProxy をitemModel とオプションのparent で構築します。通常、項目モデルは他のコントロールによって所有されるため、プロキシは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 の所有権を持ちません。役割マッピングは、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)
QItemModelBarDataProxy をitemModel とオプションのparent で構築します。通常、アイテムモデルは他のコントロールによって所有されるため、プロキシは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()も参照してください 。
© 2025 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.