#ifndef CHARTLINE_H #define CHARTLINE_H #include #include #include #include #include #include #include #include QT_CHARTS_USE_NAMESPACE struct DataSeries { QString seriesName; QColor lineColor; QPixmap markerIcon; QList data; }; class ChartLine : public QChartView { Q_OBJECT public: explicit ChartLine(QWidget *parent = nullptr); // 设置图表标题和轴标签 void setChartLabels(const QString &chartTitle, const QString &xAxisLabel, const QString &yAxisLabel); // 添加一个数据系列 void addDataSeries(const DataSeries &series); // 移除一个数据系列 void removeDataSeries(const QString &seriesName); // 更新指定数据系列的数据 void updateDataSeries(const QString &seriesName, const QList &data); protected: void resizeEvent(QResizeEvent *event) override; private: QChart *m_chart; QValueAxis *m_axisX; QValueAxis *m_axisY; // 统一的折线系列 QLineSeries *m_lineSeries; // 存储所有数据系列信息 QMap m_dataSeriesMap; // 存储每个数据系列对应的散点系列 QMap m_scatterSeriesMap; // 存储每个系列的自定义图标 QMap> m_pixmapItemsMap; // 重新构建折线数据 void rebuildLineSeries(); // 更新图标位置 void updateMarkers(); }; #endif // CHARTLINE_H