本文共 1862 字,大约阅读时间需要 6 分钟。
本本提供一个可以动态绘制折线图的接口Graph,该接口只提供了每次加入一个点的方法,其他方法可以在此基础上添加。绘制曲线图等类似。
QT版本:QT5.7或以上
QT5.5或5.6可以按照如下方法部署QtCharts:
git clone https://github.com/qt/qtcharts.gitgit checkout 5.7
用QT5.6打开qtcharts.pro文件,刚打开时,会显示配置版本,选择Release-64版本。
构建-构建qtcharts
项目-运行-添加部署步骤-make-make参数:install-构建-部署qtcharts
参考:
#ifndef GRAPH_H#define GRAPH_H#include#include #include "QtCharts/QtCharts"using namespace QtCharts;using namespace std;namespace Ui {class Graph;}class Graph : public QWidget{ Q_OBJECTpublic: explicit Graph(QString title, QWidget *parent = 0); ~Graph(); void AddPoint(double, int);private: Ui::Graph * ui; QChartView* _chartView; //画布 QChart* _chart; //画笔 QLineSeries* _series; //折线类 QLineSeries* _preSeries; //折线类 QValueAxis * _axisX; //x轴 QValueAxis * _axisY; //y轴 vector _packageLoss; //丢包率 QString _title; //折线标题};#endif // GRAPH_H
#include "graph.h"#include "ui_graph.h"Graph::Graph(QString title, QWidget *parent) : QWidget(parent), ui(new Ui::Graph), _title(title){ ui->setupUi(this); _chartView = new QChartView(this); _chart = new QChart(); _series = NULL; _preSeries = NULL; QSize size(800, 400); _chartView->resize(size);}Graph::~Graph(){ delete ui;}void Graph::AddPoint(double value, int t){ _packageLoss.push_back(value); if (_preSeries) { delete _preSeries; _preSeries = NULL; } _series = new QLineSeries(); _series->setName(_title); for (int i = 0;i < _packageLoss.size();i++) { _series->append(i, _packageLoss[i]); } _chart->addSeries(_series); _chart->createDefaultAxes(); _chart->axisY()->setTitleText(""); _chart->axisX()->setTitleText("sec"); _chartView->setChart(_chart); _chartView->show(); _preSeries = _series;}
生成样图: