Diagramme mit CSV-Daten

Wie man Daten aus einer CSV-Datei in Qt Graphs visualisiert.

Das Beispiel Diagramme mit CSV-Daten zeigt, wie Daten aus einer CSV-Datei in einem 2D-Balkendiagramm angezeigt werden können. Die Anwendung liest die CSV-Datei mithilfe eines CSV-Parsers eines Drittanbieters. Die Daten werden in ein benutzerdefiniertes Modell eingefügt, das von QAbstractTableModel erbt. Nachdem die Daten in das Modell eingefügt wurden, enthält die linke Spalte die vertikalen Kopfdaten, während die obere Zeile die horizontalen Kopfdaten enthält.

Die ausgewählte Bibliothek eines Drittanbieters kennt das Qt Resource System nicht, so dass sie die CSV-Datei nicht aus dem Dateipfad laden kann. Daher muss der Inhalt der Quelle geladen werden, bevor sie an die Bibliothek übergeben wird. Die CSV-Bibliothek in diesem Beispiel akzeptiert die Datei entweder als Dateipfad, std::fstream oder std::stringstream. Da sich die CSV-Datei in Qt-Ressourcen befindet, weiß die Bibliothek nicht, wie sie zu laden ist, 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 dann wird diese Zeichenkette in einem std::stringstream geöffnet.

In dem Anwendungsfenster werden die Daten des Modells in einer Tabellenansicht dargestellt. In der Tabellenansicht kann der Benutzer einen Teilbereich der Daten auswählen, der dann im Balkendiagramm angezeigt wird.

Da die Balkenreihen die Achsenbeschriftungen der Kategorien nicht ändern, werden die Achsenbeschriftungen bei einer Aktualisierung der Reihen nicht aktualisiert. Dies wird in JavaScript durch das Extrahieren von Beschriftungsnamen aus der Spalte ganz links des Modells bewerkstelligt. Die extrahierten Beschriftungsnamen werden dann auf die Beschriftungseigenschaft der Kategorieachse gesetzt.

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

Ausführen des Beispiels

Zum Ausführen des Beispiels von Qt Creatorzu starten, öffnen Sie den Modus Welcome und wählen Sie das Beispiel aus Examples. Für weitere Informationen siehe Qt Creator: Tutorial: Erstellen und Ausführen.

Beispielprojekt @ code.qt.io

Siehe auch QML-Anwendungen.

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