Auf dieser Seite

Diagramme mit CSV-Daten

So visualisieren Sie Daten aus einer CSV-Datei in „ Qt Graphs “.

2D-Balkendiagramm zur Darstellung von Daten, die aus einer CSV-Datei geladen wurden

Das Beispiel „Diagramme mit CSV-Daten “ zeigt, wie Daten aus einer CSV-Datei in einem 2D-Balkendiagramm dargestellt werden. Die Anwendung liest die CSV-Datei mithilfe eines CSV-Parsers eines Drittanbieters ein. Die Daten werden in ein benutzerdefiniertes Modell eingefügt, das von „ QAbstractTableModel “ erbt. Nach dem Einfügen der Daten in das Modell enthält die Spalte ganz links die vertikalen Kopfdaten, während die oberste Zeile die horizontalen Kopfdaten enthält.

Die ausgewählte Bibliothek eines Drittanbieters kennt das Qt-Ressourcensystem nicht und kann die CSV-Datei daher nicht über den Dateipfad laden. Daher muss der Inhalt der Quelle geladen werden, bevor er an die Bibliothek übergeben wird. Die CSV-Bibliothek in diesem Beispiel akzeptiert die Datei entweder als Dateipfad, als „ std::fstream “ oder als „ std::stringstream “. Da sich die CSV-Datei in den Qt-Ressourcen befindet, weiß die Bibliothek nicht, wie sie diese laden soll, und „ QFile “ unterstützt „ std::fstream “ nicht; die einzige verbleibende Option ist die Verwendung von „ std::stringstream “. Die gesamte Datei kann über „ QFile::readAll()“ in eine Zeichenkette eingelesen werden, und diese Zeichenkette wird anschließend in ein „ std::stringstream “ geöffnet.

Im Anwendungsfenster werden die Daten aus dem Modell in einer Tabellenansicht dargestellt. Aus der Tabellenansicht kann der Benutzer einen Teilbereich der Daten auswählen, der dann im Balkendiagramm angezeigt wird.

Da die Balkenreihe die Beschriftungen der Kategorieachse nicht ändert, werden die Achsenbeschriftungen bei einer Aktualisierung der Reihe nicht aktualisiert. Dies wird in JavaScript dadurch gelöst, dass die Beschriftungsnamen aus der Spalte ganz links im Modell extrahiert werden. Die extrahierten Beschriftungsnamen werden dann der Eigenschaft „labels“ der Kategorieachse zugewiesen.

    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;
    }

Ausführen des Beispiels

Sie können das Beispiel wie folgt ausführen:

Beispielprojekt @ code.qt.io

Siehe auch QML-Anwendungen.

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