QItemModelBarDataProxy Class
アイテムモデルのデータをQ3DBars で表示するためのプロキシ・クラスです。もっと見る...
Header: | #include <QItemModelBarDataProxy> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS DataVisualization) target_link_libraries(mytarget PRIVATE Qt6::DataVisualization) |
qmake: | QT += datavisualization |
Since: | QtDataVisualization 1.0 |
In QML: | ItemModelBarDataProxy |
Inherits: | QBarDataProxy |
パブリックな型
enum | MultiMatchBehavior { MMBFirst, MMBLast, MMBAverage, MMBCumulative } |
プロパティ
|
|
パブリック関数
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() |
bool | autoColumnCategories() const |
bool | autoRowCategories() const |
QStringList | columnCategories() const |
int | 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 |
int | 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 を使用すると、Q3DBars のデータソースとしてQAbstractItemModel 派生モデルを使用することができます。定義されたマッピングを使用して、モデルからのデータをQ3DBars グラフの行、列、値にマッピングします。
データは、マッピングやモデルが変更されるたびに非同期に解決されます。QBarDataProxy::arrayResetデータが解決されると()が発行されます。ただし、useModelCategories プロパティが true に設定されている場合、同じフレームにモデル全体が解決されるような変更がない限り、単一の項目の変更は同期的に解決されます。
マッピングは以下の方法で使用できます:
- useModelCategories プロパティが true に設定されている場合、このプロキシはQAbstractItemModel の行と列をQ3DBars の行と列に直接マッピングし、デフォルトでは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" -> "2006" // 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 << "2006" << "2007" << "2008" << "2009" << "2010" << "2011" << "2012"; 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 Data Visualization のデータ処理も参照してください 。
メンバ型のドキュメント
enum QItemModelBarDataProxy::MultiMatchBehavior
QItemModelBarDataProxy::multiMatchBehavior プロパティの振る舞い型。
定数 | 値 | 説明 |
---|---|---|
QItemModelBarDataProxy::MMBFirst | 0 | 値は、各行/列の組み合わせに一致する項目モデルの最初の項目から取得されます。 |
QItemModelBarDataProxy::MMBLast | 1 | 値は、各行/列の組み合わせにマッチする項目モデルの最後の項目から取られる。 |
QItemModelBarDataProxy::MMBAverage | 2 | 各行/列の組み合わせにマッチするすべての項目からの値が平均され、その平均がバー値として使用される。 |
QItemModelBarDataProxy::MMBCumulative | 3 | 各行/列の組み合わせにマッチするすべての項目からの値が合計され、その合計が棒の値として使用される。 |
プロパティ 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 : MultiMatchBehavior
各行/列の組み合わせに対する複数の一致の処理方法。
QItemModelBarDataProxy::MMBLast選択した動作は、バーの値と回転の両方に影響します。
例えば、不規則な間隔で取得されたタイムスタンプ付きデータを持つ項目モデルがあり、各日のデータ項目の合計値を棒グラフで可視化したいとします。これは、各バーが1日を表すように行と列のカテゴリを指定し、multiMatchBehavior をQItemModelBarDataProxy::MMBCumulative に設定することで実現できます。
アクセス関数:
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 の所有権を持ちません。役割マッピングは、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 に設定します。
[virtual noexcept]
QItemModelBarDataProxy::~QItemModelBarDataProxy()
QItemModelBarDataProxy を破棄します。
[invokable]
int 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]
int 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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。