Sur cette page

Graphiques à partir de données CSV

Comment visualiser les données d'un fichier CSV dans Qt Graphs.

Diagramme à barres en 2D permettant de visualiser les données chargées à partir d'un fichier CSV

L'exemple « Graphiques avec des données CSV » montre comment afficher les données d'un fichier CSV sous forme de diagramme à barres en 2D. L'application lit le fichier CSV à l'aide d'un analyseur CSV tiers. Les données sont insérées dans un modèle personnalisé qui hérite de la classe ` QAbstractTableModel`. Une fois les données insérées dans le modèle, la colonne la plus à gauche contient les données d'en-tête verticales, tandis que la ligne supérieure contient les données d'en-tête horizontales.

La bibliothèque tierce sélectionnée ne connaît pas le système de ressources Qt; elle ne peut donc pas charger le fichier CSV à partir du chemin d’accès. Par conséquent, le contenu de la source doit être chargé avant d’être transmis à la bibliothèque. Dans cet exemple, la bibliothèque CSV accepte le fichier sous la forme d’un chemin d’accès, d’un fichier « std::fstream » ou d’un fichier « std::stringstream ». Comme le fichier CSV se trouve dans les ressources Qt, la bibliothèque ne sait pas comment le charger, et QFile ne prend pas en charge std::fstream; la seule option restante est d’utiliser std::stringstream. Le fichier entier peut être lu dans une chaîne via QFile::readAll(), puis cette chaîne est ouverte dans un std::stringstream.

Dans la fenêtre de l’application, une vue de tableau présente les données issues du modèle. À partir de cette vue, l’utilisateur peut sélectionner une sous-section de données qui s’affiche ensuite dans le graphique à barres.

Comme la série de barres ne modifie pas les libellés de l’axe des catégories, la mise à jour de la série n’entraîne pas la mise à jour des libellés de l’axe. Cette gestion est assurée en JavaScript en extrayant les noms des libellés de la colonne la plus à gauche du modèle. Les noms de libellés extraits sont ensuite attribués à la propriété `labels` de l’axe des catégories.

    function extractBarSetGategories(first, count) {
        let categories = [];
        const last = first + count;
        for (let i = first; i < last; ++i)
            categories.push(tv.model.headerData(i, Qt.Horizontal, Qt.DisplayRole) + " medals");
        return categories;
    }

Exécution de l'exemple

Vous pouvez exécuter l’exemple à partir de :

Exemple de projet sur code.qt.io

Voir également Applications QML.

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