案例
在QtExample中搜索areachart,运行效果如下:
分析
创建这个面积图,有以下几个步骤:
1.初始化2条Line
2.定义Line的各个Point
3.设置Area,两条线围成一个面
4.创建chart,初始化属性
5.设置chartview。渲染出chart
代码
在QT中新建工程,最小工程中只需要.pro和main.cpp就可以。
因为本案例要用chart,需要在.pro中加入QT += charts
在main.cpp中,引入相关头文件,并初始化界面:
#include <QtWidgets/QApplication>
#include <QtWidgets/QMainWindow>
#include <QtCharts/QLineSeries>
#include <QtCharts/QAreaSeries>
#include <QtCharts/QChartView>
QT_CHARTS_USE_NAMESPACE
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//……
QMainWindow window;
window.setCentralWidget(chartView);
window.resize(800, 600);
window.show();
return a.exec();
}
然后开始绘制面积图:
1.初始化Line
QLineSeries *series0 = new QLineSeries();
QLineSeries *series1 = new QLineSeries();
2.定义Line的各个Point
*series0 << QPointF(1,7) << QPointF(5,9) << QPointF(10,7);
*series1 << QPointF(1,3) << QPointF(5,3) << QPointF(10,3);
3.设置Area
QAreaSeries *series = new QAreaSeries(series0, series1);
series->setName("areachart");
QPen pen(Qt::green);
pen.setWidth(3);
series->setPen(pen);
4.创建chart
QChart *chart = new QChart();
chart->addSeries(series);
chart->setTitle("Simple areachart example");
chart->createDefaultAxes();
chart->axes(Qt::Horizontal).first()->setRange(0, 10);
chart->axes(Qt::Vertical).first()->setRange(0, 10);
5.设置chartview
QChartView * chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing); //渲染设置
主要用到的Qt类有QLineSeries、QAreaSeries和QChartView这3个。
效果如下:
以上。