Auf dieser Seite

StocQt

Ein konfigurierbares Aktienchart für 100 Aktien.

StocQt-Anwendung zur Anzeige der Qt Group-Aktie mit einem 3D-Kursverlaufsdiagramm und einem Übersichtsbereich

Die Anwendung StocQt zeigt Trenddiagramme für eine benutzerdefinierte Liste von 100 Aktien auf Basis des NASDAQ-100 an. Der Benutzer kann Aktien aus einer Liste auswählen. Die Anwendung ermöglicht es außerdem, bis zu 5 Aktien als Favoriten zu speichern, um sie in Vergleichsdiagrammen zu verwenden.

Die Anwendung verwendet mehrere benutzerdefinierte Typen wie „Search“, „StockCheckBox“, „StockChart“, „StockView“ und „SettingsView“. Diese Typen stellen die Aktienkurse in einer übersichtlichen Form dar und ermöglichen es dem Benutzer, das Trenddiagramm individuell anzupassen. So kann der Benutzer beispielsweise wählen, ob er die wöchentlichen, monatlichen, vierteljährlichen oder halbjährlichen Trends des Aktienkurses anzeigen möchte.

Die Anwendung nutzt ein in C++ implementiertes benutzerdefiniertes „StockEngine“-Singleton für die Datenverarbeitung, beispielsweise für API-Anfragen und das Speichern von Favoriten. Sie implementiert eine benutzerdefinierte „APIHandler“-Klasse zum Abrufen der Online-Daten.

void ApiHandler::stockHistory(const QString &symbol,
                              std::function<void(QList<HistoryData>)> onComplete)

Die Anwendung nutzt den Typ „ ObjectModel “, um auf die visuellen Datenmodelle zuzugreifen, auf die sie angewiesen ist.

    id: mainWindow
        ...
    ListView {
        id: root
        ...
        model: ObjectModel {
            Item {
                id: stockContainer
                width: root.width
                height: root.height
                StockView {
                    id: stockView
                    anchors.fill: parent
                    visible: false
                    width: root.width
                    height: root.height
                    stateGroup: stateList
                }

                StockListView {
                    id: listView
                    visible: true
                    anchors.fill: parent
                    width: root.width
                    height: root.height
                    stateGroup: stateList
                }
            }

            FavoriteView {
                id: favoriteView
                width: root.width
                height: root.height
            }

            SettingsView {
                id: infoView
                width: root.width
                height: root.height
            }
        }
    }

Das „StockListModel“ ist ein benutzerdefiniertes Datenmodell, das die Aktien mit grundlegenden Informationen wie Aktien-ID, Name, Kurs und Favoritenstatus auflistet. Diese Anwendung nutzt dieses Datenmodell, wenn der Benutzer eine andere Aktie aus der Liste auswählen möchte.

„StockView“ und „FavoriteView“ sind komplexe Datenmodelle, die ein Trenddiagramm für die ausgewählte Aktie oder eine Gruppe von bis zu 5 Aktien darstellen. Sie verwenden einen weiteren benutzerdefinierten Typ, „StockChart“ oder „FavoriteChart“, der die Daten aus der „StockEngine“ in „ListModels“ lädt und den grafischen Kursverlauf mithilfe von „Surface3D“, „Bars3D“ oder „Scatter3D“ darstellt.

Rectangle {
    id: chart
        ...
    function updateHistory(){
        updateStartDate()
        let startPoint = StockEngine.stockModel.indexOf(startDate)
        let totalPoints = StockEngine.stockModel.historyCount()

        let width = startPoint / 50
        for (let i = 0; i < totalPoints; i++) {
            let epochInDays = StockEngine.stockModel.historyDate(i, false) / 86400
            appendSurfacePoint(openModel, width, epochInDays, StockEngine.stockModel.openPrice(i))
            appendSurfacePoint(closeModel,width, epochInDays, StockEngine.stockModel.closePrice(i))
            appendSurfacePoint(highModel,width, epochInDays, StockEngine.stockModel.highPrice(i))
            appendSurfacePoint(lowModel,width, epochInDays, StockEngine.stockModel.lowPrice(i))
        }
        ...
    Surface3D {
        id: historyGraph
        ...
            Surface3DSeries {
                id: highSeries
                visible: true
                baseColor: "green"
                shading: Surface3DSeries.Shading.Flat
                drawMode: Surface3DSeries.DrawSurface
                itemLabelFormat: "Time: @xLabel High:@yLabel$"
                ItemModelSurfaceDataProxy {
                    itemModel: highModel
                    rowRole: "row"
                    columnRole: "column"
                    yPosRole: "value"
                }
            },

Die „SettingsView“ zeigt Informationen zur Anwendung an.

Um die Anwendung besser zu verstehen, sehen Sie sich den Code mit „ Qt Creator “ oder Visual Studio Code an.

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.