Qt Charts的横空出世标志着QWT,QCustomPlot 。。。。。时代的终结,让我们开始使用QtCharts吧
在Qt 5.7.0中已经集成了Qt Charts模块,需要在安装Qt的时候把Charts模块安装到本地就可以。
剩下的就是傻瓜安装了,等待安装完后,可以在示例中输入charts来查看原生demo
剩下的就是实践了
新建工程,这里我使用的是creater工程,没有使用qml,新建后就是仿照demo写自己的demo
先上运行截图
这里有部分代码复制的是Qt的帮助文档中的代码(Qt的帮助文档是我见过最牛逼的帮助文档了)
简单的项目分解
第一部分,在工程文件引入Qt Charts模块
QT += charts
剩下的就是在.h中包含需要头文件
#include <QtCharts>
#include <QtCharts/QChartView>
#include <QtCharts/QLineSeries>
#include <QtCharts/QAreaSeries>
这里还有一个问题,不知道是我的问题,还是就是需要这样做,这里需要引用命名空间“QtCharts”
using namespace QtCharts;
剩下的就是声明变量
QChart *chart;
QLineSeries *series0,*series1;
QAreaSeries *series;
QChartView *chartView;
剩下的就是实现内容
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
chart = new QChart();
series0 = new QLineSeries();
series1 = new QLineSeries();
*series0 << QPointF(1, 5) << QPointF(3, 7) << QPointF(7, 6) << QPointF(9, 7) << QPointF(12, 6)
<< QPointF(16, 7) << QPointF(18, 5);
*series1 << QPointF(1, 3) << QPointF(3, 4) << QPointF(7, 3) << QPointF(8, 2) << QPointF(12, 3)
<< QPointF(16, 4) << QPointF(18, 3);
series = new QAreaSeries(series0, series1);
series->setName("Batman");
QPen pen(0x059605);
pen.setWidth(3);
series->setPen(pen);
QLinearGradient gradient(QPointF(0, 0), QPointF(0, 1));
gradient.setColorAt(0.0, 0x3cc63c);
gradient.setColorAt(1.0, 0x26f626);
gradient.setCoordinateMode(QGradient::ObjectBoundingMode);
series->setBrush(gradient);
chart->addSeries(series);
chart->setTitle("Simple areachart example");
chart->createDefaultAxes();
chart->axisX()->setRange(0, 20);
chart->axisY()->setRange(0, 10);
chartView = new QChartView(this);
chartView->resize(400,300);
chartView->setChart(chart);
chartView->setRenderHint(QPainter::Antialiasing);
}
Widget::~Widget()
{
delete ui;
}
这就完成了,是不是很简单了