自定义组件_滚动横幅 & 弹窗 & 对话框 & 字体图标等
自定义组件_圆弧进度条
自定义组件_水波进度条
自定义组件_多彩仪表盘
自定义组件_通用仪表盘
自定义组件_网格组件 (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_OBJECT
public:
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