Sur cette page

QItemModelBarDataProxy Class

Classe proxy pour la présentation des données dans les modèles d'éléments avec Q3DBarsWidgetItem. Plus...

En-tête : #include <QItemModelBarDataProxy>
CMake : find_package(Qt6 REQUIRED COMPONENTS Graphs)
target_link_libraries(mytarget PRIVATE Qt6::Graphs)
qmake : QT += graphs
En QML : ItemModelBarDataProxy
Héritages : QBarDataProxy

Types publics

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

Propriétés

Fonctions publiques

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

Signaux

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)

Description détaillée

QItemModelBarDataProxy vous permet d'utiliser les modèles dérivés de QAbstractItemModel comme source de données pour Q3DBarsWidgetItem. Il utilise les mappings définis pour faire correspondre les données du modèle aux lignes, colonnes et valeurs du graphique Q3DBarsWidgetItem.

Les données sont résolues de manière asynchrone lorsque les mappings ou le modèle changent. QBarDataProxy::arrayReset() est émis lorsque les données ont été résolues. Toutefois, lorsque la propriété useModelCategories est définie sur true, les modifications d'un seul élément sont résolues de manière synchrone, à moins que la même image ne contienne également une modification qui entraîne la résolution de l'ensemble du modèle.

Les mappages peuvent être utilisés de la manière suivante :

  • Si la propriété useModelCategories est définie sur true, ce proxy mappera les lignes et les colonnes de QAbstractItemModel directement sur les lignes et les colonnes de Q3DBarsWidgetItem, et utilisera la valeur renvoyée pour Qt::DisplayRole comme valeur de barre par défaut. Le rôle de valeur à utiliser peut être redéfini si Qt::DisplayRole ne convient pas.
  • Pour les modèles dont les données ne sont pas triées proprement en lignes et en colonnes, tels que les modèles basés sur QAbstractListModel, vous pouvez définir un rôle du modèle à mapper pour chaque ligne, chaque colonne et chaque valeur.
  • Si vous ne souhaitez pas inclure toutes les données contenues dans le modèle, ou si les lignes et les colonnes autogénérées ne sont pas ordonnées comme vous le souhaitez, vous pouvez spécifier quelles lignes et quelles colonnes doivent être incluses et dans quel ordre en définissant une liste explicite de catégories pour l'une ou l'autre des lignes et des colonnes, ou pour les deux.

Par exemple, supposons que vous disposiez d'un modèle personnalisé QAbstractItemModel pour stocker diverses valeurs mensuelles liées à une entreprise. Chaque élément du modèle a les rôles "année", "mois", "revenus" et "dépenses". Vous pouvez procéder comme suit pour afficher les données dans un graphique à barres :

// 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"));

Si les champs du modèle ne contiennent pas les données dans le format exact dont vous avez besoin, vous pouvez spécifier une expression régulière de modèle de recherche et une règle de remplacement pour chaque rôle afin d'obtenir la valeur dans le format dont vous avez besoin. Pour plus d'informations sur le fonctionnement du remplacement à l'aide d'expressions régulières, consultez la documentation de la fonction QString::replace(const QRegularExpression &rx, const QString &after). Notez que l'utilisation d'expressions régulières a un impact sur les performances, il est donc plus efficace d'utiliser des modèles d'éléments où la recherche et le remplacement ne sont pas nécessaires pour obtenir les valeurs souhaitées.

Pour un exemple d'utilisation des modèles de recherche en conjonction avec les rôles, voir Simple Bar Graph.

Voir également Qt Graphs Data Handling with 3D.

Documentation sur les types de membres

enum class QItemModelBarDataProxy::MultiMatchBehavior

Types de comportement pour la propriété QItemModelBarDataProxy::multiMatchBehavior.

ConstanteValeurDescription
QItemModelBarDataProxy::MultiMatchBehavior::First0La valeur est tirée du premier élément du modèle d'élément qui correspond à chaque combinaison de ligne/colonne.
QItemModelBarDataProxy::MultiMatchBehavior::Last1La valeur est tirée du dernier élément du modèle d'élément qui correspond à chaque combinaison de ligne/colonne.
QItemModelBarDataProxy::MultiMatchBehavior::Average2La moyenne des valeurs de tous les éléments correspondant à chaque combinaison ligne/colonne est calculée et la moyenne est utilisée comme valeur de la barre.
QItemModelBarDataProxy::MultiMatchBehavior::Cumulative3Les valeurs de tous les éléments correspondant à chaque combinaison ligne/colonne sont additionnées et le total est utilisé comme valeur de la barre.

Documentation sur les propriétés

autoColumnCategories : bool

Cette propriété indique si les catégories de colonnes sont générées automatiquement.

Si elle vaut true, le mappage ignore les catégories de colonnes définies explicitement et les remplace par des catégories générées automatiquement chaque fois que les données du modèle sont résolues. La valeur par défaut est true.

Fonctions d'accès :

bool autoColumnCategories() const
void setAutoColumnCategories(bool enable)

Signal de notification :

void autoColumnCategoriesChanged(bool enable)

autoRowCategories : bool

Cette propriété indique si les catégories de lignes sont générées automatiquement.

Lorsque cette propriété vaut true, le mappage ignore les catégories de ligne définies explicitement et les remplace par celles générées automatiquement chaque fois que les données du modèle sont résolues. La valeur par défaut est true.

Fonctions d'accès :

bool autoRowCategories() const
void setAutoRowCategories(bool enable)

Signal de notification :

void autoRowCategoriesChanged(bool enable)

columnCategories : QStringList

Cette propriété contient les catégories de colonnes pour le mappage.

Fonctions d'accès :

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

Signal de notification :

void columnCategoriesChanged()

columnRole : QString

Cette propriété contient le rôle de la colonne pour le mappage.

Fonctions d'accès :

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

Signal de notification :

void columnRoleChanged(const QString &role)

columnRolePattern : QRegularExpression

Cette propriété indique si une recherche et un remplacement sont effectués sur la valeur mappée par le rôle de colonne avant qu'elle ne soit utilisée comme catégorie de colonne.

Cette propriété spécifie l'expression régulière pour trouver la partie de la valeur mappée à remplacer et la propriété columnRoleReplace contient la chaîne de remplacement. Cette propriété est utile, par exemple, pour analyser les catégories de ligne et de colonne à partir d'un champ d'horodatage unique dans le modèle d'élément.

Fonctions d'accès :

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

Signal de notification :

void columnRolePatternChanged(const QRegularExpression &pattern)

Voir également columnRole et columnRoleReplace.

columnRoleReplace : QString

Cette propriété contient le contenu de remplacement à utiliser avec columnRolePattern.

La valeur par défaut est une chaîne vide. Pour plus d'informations sur le fonctionnement de la recherche et du remplacement à l'aide d'expressions régulières, voir la documentation de la fonction QString::replace(const QRegularExpression &rx, const QString &after).

Fonctions d'accès :

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

Signal du notificateur :

void columnRoleReplaceChanged(const QString &replace)

Voir également columnRole et columnRolePattern.

itemModel : QAbstractItemModel*

Cette propriété contient le modèle de l'élément.

Fonctions d'accès :

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

Signal de notification :

void itemModelChanged(const QAbstractItemModel *itemModel)

multiMatchBehavior : QItemModelBarDataProxy::MultiMatchBehavior

Comment sont gérées les correspondances multiples pour chaque combinaison ligne/colonne.

La valeur par défaut est QItemModelBarDataProxy::MultiMatchBehavior::Last. Le comportement choisi affecte à la fois la valeur de la barre et la rotation.

Par exemple, vous pouvez avoir un modèle d'élément avec des données horodatées prises à intervalles irréguliers et vous voulez visualiser la valeur totale des éléments de données pour chaque jour avec un graphique à barres. Pour ce faire, spécifiez les catégories de ligne et de colonne de sorte que chaque barre représente un jour et définissez multiMatchBehavior sur QItemModelBarDataProxy::MultiMatchBehavior::Cumulative.

Fonctions d'accès :

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

Signal de notification :

void multiMatchBehaviorChanged(QItemModelBarDataProxy::MultiMatchBehavior behavior)

rotationRole : QString

Cette propriété contient le rôle de rotation pour le mappage.

Fonctions d'accès :

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

Signal de notification :

void rotationRoleChanged(const QString &role)

rotationRolePattern : QRegularExpression

Cette propriété indique si une recherche et un remplacement sont effectués sur la valeur mappée par le rôle de rotation avant qu'elle ne soit utilisée comme angle de rotation de la barre.

Cette propriété spécifie l'expression régulière permettant de trouver la partie de la valeur mappée à remplacer et la propriété rotationRoleReplace contient la chaîne de remplacement.

Fonctions d'accès :

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

Notifier signal :

void rotationRolePatternChanged(const QRegularExpression &pattern)

Voir aussi rotationRole et rotationRoleReplace.

rotationRoleReplace : QString

Cette propriété contient le contenu de remplacement à utiliser avec rotationRolePattern.

La valeur par défaut est une chaîne vide. Pour plus d'informations sur le fonctionnement de la recherche et du remplacement à l'aide d'expressions régulières, voir la documentation de la fonction QString::replace(const QRegularExpression &rx, const QString &after).

Fonctions d'accès :

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

Signal du notificateur :

void rotationRoleReplaceChanged(const QString &replace)

Voir également rotationRole et rotationRolePattern.

rowCategories : QStringList

Cette propriété contient les catégories de lignes pour le mappage.

Fonctions d'accès :

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

Signal de notification :

void rowCategoriesChanged()

rowRole : QString

Cette propriété contient le rôle de la ligne pour le mappage.

Fonctions d'accès :

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

Signal de notification :

void rowRoleChanged(const QString &role)

rowRolePattern : QRegularExpression

Cette propriété indique si une recherche et un remplacement sont effectués sur la valeur mappée par le rôle de ligne avant qu'elle ne soit utilisée comme catégorie de ligne.

Cette propriété spécifie l'expression régulière pour trouver la partie de la valeur mappée à remplacer et la propriété rowRoleReplace contient la chaîne de remplacement. Cette propriété est utile, par exemple, pour analyser les catégories de ligne et de colonne à partir d'un champ d'horodatage unique dans le modèle d'élément.

Fonctions d'accès :

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

Signal de notification :

void rowRolePatternChanged(const QRegularExpression &pattern)

Voir également rowRole et rowRoleReplace.

rowRoleReplace : QString

Cette propriété contient le contenu de remplacement à utiliser avec rowRolePattern.

La valeur par défaut est une chaîne vide. Pour plus d'informations sur le fonctionnement de la recherche et du remplacement à l'aide d'expressions régulières, voir la documentation de la fonction QString::replace(const QRegularExpression &rx, const QString &after).

Fonctions d'accès :

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

Signal du notificateur :

void rowRoleReplaceChanged(const QString &replace)

Voir également rowRole et rowRolePattern.

useModelCategories : bool

Cette propriété indique si les rôles et les catégories des lignes et des colonnes sont utilisés pour le mappage.

Si elle vaut true, le mappage ignore les rôles et les catégories des lignes et des colonnes et utilise à la place les lignes et les colonnes du modèle. La valeur par défaut est false.

Fonctions d'accès :

bool useModelCategories() const
void setUseModelCategories(bool enable)

Signal de notification :

void useModelCategoriesChanged(bool enable)

valueRole : QString

Cette propriété contient le rôle de la valeur pour le mappage.

Fonctions d'accès :

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

Signal de notification :

void valueRoleChanged(const QString &role)

valueRolePattern : QRegularExpression

Cette propriété indique si une recherche et un remplacement sont effectués sur la valeur mappée par le rôle value avant qu'elle ne soit utilisée comme valeur de barre.

Cette propriété spécifie l'expression régulière permettant de trouver la partie de la valeur mappée à remplacer et la propriété valueRoleReplace contient la chaîne de remplacement.

Fonctions d'accès :

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

Notifier signal :

void valueRolePatternChanged(const QRegularExpression &pattern)

Voir aussi valueRole et valueRoleReplace.

valueRoleReplace : QString

Cette propriété contient le contenu de remplacement à utiliser avec valueRolePattern.

La valeur par défaut est une chaîne vide. Pour plus d'informations sur le fonctionnement de la recherche et du remplacement à l'aide d'expressions régulières, voir la documentation de la fonction QString::replace(const QRegularExpression &rx, const QString &after).

Fonctions d'accès :

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

Signal du notificateur :

void valueRoleReplaceChanged(const QString &replace)

Voir également valueRole et valueRolePattern.

Documentation sur les fonctions membres

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

Construit QItemModelBarDataProxy avec une option parent.

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

Construit QItemModelBarDataProxy avec itemModel et une option parent. Le proxy n'est pas propriétaire de itemModel, car les modèles d'éléments appartiennent généralement à d'autres contrôles.

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

Construit QItemModelBarDataProxy avec itemModel et une option parent. Le proxy n'est pas propriétaire de itemModel, car les modèles d'éléments appartiennent généralement à d'autres contrôles. La valeur role est fixée à valueRole. Ce constructeur est destiné à être utilisé avec des modèles dont les données sont déjà correctement triées en lignes et en colonnes, c'est pourquoi il fixe également la propriété useModelCategories à true.

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

Construit QItemModelBarDataProxy avec itemModel et une option parent. Le proxy n'est pas propriétaire de itemModel, car les modèles d'éléments appartiennent généralement à d'autres contrôles. Les mappages de rôles sont définis avec rowRole, columnRole, et valueRole.

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

Construit QItemModelBarDataProxy avec itemModel et une option parent. Le proxy n'est pas propriétaire de itemModel, car les modèles d'éléments appartiennent généralement à d'autres contrôles. Les mappages de rôles sont définis avec rowRole, columnRole, valueRole, et rotationRole.

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

Construit QItemModelBarDataProxy avec itemModel et une option parent. Le proxy n'est pas propriétaire de itemModel, car les modèles d'éléments appartiennent généralement à d'autres contrôles. Les mappages de rôles sont définis avec rowRole, columnRole, et valueRole. Les catégories de lignes et de colonnes sont définies avec rowCategories et columnCategories. Ce constructeur définit également autoRowCategories et autoColumnCategories comme faux.

[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)

Construit QItemModelBarDataProxy avec itemModel et une option parent. Le proxy n'est pas propriétaire de itemModel, car les modèles d'éléments appartiennent généralement à d'autres contrôles. Les mappages de rôles sont définis avec rowRole, columnRole, valueRole, et rotationRole. Les catégories de lignes et de colonnes sont définies avec rowCategories et columnCategories. Ce constructeur définit également autoRowCategories et autoColumnCategories comme faux.

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

Détruit QItemModelBarDataProxy.

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

Renvoie l'index de la catégorie spécifiée category dans la liste des catégories de colonnes. Si la catégorie n'est pas trouvée, -1 est renvoyé.

Remarque : si la génération automatique de catégories de colonnes est utilisée, cette méthode ne renverra pas d'index valide avant que les données du modèle ne soient résolues pour la première fois.

Note : Cette fonction peut être invoquée via le système de méta-objets et à partir de QML. Voir Q_INVOKABLE.

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

Modifie rowRole, columnRole, valueRole, rotationRole, rowCategories et columnCategories dans la cartographie.

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

Renvoie l'index de l'adresse category spécifiée dans la liste des catégories de lignes. Si la liste des catégories de lignes est vide, -1 est renvoyé.

Remarque : si la génération automatique de catégories de lignes est utilisée, cette méthode ne renverra pas d'index valide avant que les données du modèle ne soient résolues pour la première fois.

Remarque : cette fonction peut être invoquée via le système de méta-objets et à partir de QML. Voir Q_INVOKABLE.

void QItemModelBarDataProxy::setItemModel(QAbstractItemModel *itemModel)

Définit le modèle de l'élément à itemModel. Ne prend pas possession du modèle, mais s'y connecte pour écouter les changements.

Remarque : fonction de définition de la propriété itemModel.

Voir également 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.