自定义组件_滚动横幅&弹窗&对话框&字体图标等
自定义组件_圆弧进度条
自定义组件_水波进度条
自定义组件_多彩仪表盘
自定义组件_通用仪表盘
自定义组件_网格组件(GirdWidget)
自定义组件_动静曲线
仓库
个性
- 可设置 Y 轴范畴、标签格局、tick 数量
- 可设置 X 轴时间跨度、工夫格局、tick 数量
- 可显示任意多条曲线、设置对应曲线色彩及数值点是否显示
- 可设置曲线更新工夫距离
- 可抉择暗藏曲线
- 自适应窗体拉伸,图表主动缩放
#ifndef DYNAMICLINE_H#define DYNAMICLINE_H#include <QChart>#include <QChartView>#include <QDateTime>#include <QDateTimeAxis>#include <QLineSeries>#include <QTimer>#include <QValueAxis>#include <QVector>#include <QWidget>using namespace QtCharts;/* 动静曲线 * 1. 可设置 Y 轴范畴、标签格局、tick 数量 * 2. 可设置 X 轴时间跨度、工夫格局、tick 数量 * 3. 可显示任意多条曲线、设置对应曲线色彩及数值点是否显示 * 4. 可设置曲线更新工夫距离 * 5. 可抉择暗藏曲线 * 6. 自适应窗体拉伸,图表主动缩放 */class DynamicLine : public QWidget{ Q_OBJECTpublic: explicit DynamicLine(QWidget *parent = nullptr); ~DynamicLine(); void start(int intervalMsec = 1000); // 开始更新图表 void stop(); // 进行更新图表 int count() const; // 曲线数量 qint64 timeAxisXSpanSecs() const; // X 轴时间跨度 void addSplineSeries(const QString &name = "", const QPen &pen = QPen(), bool pointsVisible = false); // 增加一条新的曲线public slots: void setSeriesValues(int index, int value); // 设置曲线值 void setSeriesVisible(int index, bool visible); // 设置曲线是否可见 void setChartTitle(const QString &title); // 设置图表题目 void setTimeAxisXSpanSecs(qint64 secs); // 设置 X 轴时间跨度 void setTimeAxisXFormat(const QString &format = "HH:mm"); // 设置 X 轴工夫格局 void setTimeAxisXTickCount(int tickCount); // 设置 X 轴 tick 数量 void setAxisYRange(qreal min, qreal max); // 设置 Y 轴范畴 void setpAxisYTickCount(int count); // 设置 Y 轴 tick 数量 void setAxisYLabelFormat(const QString &format); // 设置 Y 轴标签格局private: void initUi(); void initCtrl(); QLineSeries *createSeries(QChart *chart, const QString &name, const QPen &pen, bool pointsVisible = false);private slots: void updateChart();private: QVector<QLineSeries*> m_series; QChartView* m_pChartView = nullptr; QChart* m_pChart = nullptr; QDateTimeAxis* m_pTimeAxisX = nullptr; QValueAxis* m_pAxisY = nullptr; qint64 m_spanSecs = 60; QVector<int> m_lastValues; bool m_isFirstTime = false; QTimer m_timer;};#endif // DYNAMICLINE_H