123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- #ifndef CHARTLINE_H
- #define CHARTLINE_H
- #include <QtCharts/QChartView>
- #include <QtCharts/QLineSeries>
- #include <QtCharts/QScatterSeries>
- #include <QtCharts/QValueAxis>
- #include <QMap>
- #include <QPixmap>
- #include <QList>
- #include <QGraphicsPixmapItem>
- QT_CHARTS_USE_NAMESPACE
- struct DataSeries {
- QString seriesName;
- QColor lineColor;
- QPixmap markerIcon;
- QList<QPointF> 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<QPointF> &data);
- protected:
- void resizeEvent(QResizeEvent *event) override;
- private:
- QChart *m_chart;
- QValueAxis *m_axisX;
- QValueAxis *m_axisY;
- // 统一的折线系列
- QLineSeries *m_lineSeries;
- // 存储所有数据系列信息
- QMap<QString, DataSeries> m_dataSeriesMap;
- // 存储每个数据系列对应的散点系列
- QMap<QString, QScatterSeries*> m_scatterSeriesMap;
- // 存储每个系列的自定义图标
- QMap<QString, QList<QGraphicsPixmapItem*>> m_pixmapItemsMap;
- // 重新构建折线数据
- void rebuildLineSeries();
- // 更新图标位置
- void updateMarkers();
- };
- #endif // CHARTLINE_H
|