1、实例编写环境
- 操作系统:Windows 10 企业版
- 开发工具:Visual Studio 2010 旗舰版
- 开发环境:Qt4.8.6,QtCharts5.14.1
- 编程语言:C++
2、实例涉及的内容
? ? ? ? 本实例主要讲解通过QtCharts绘制面积图表,涉及的QtCharts的主要类有如下内容:QBarSet、QBarSeries、QBarCategoryAxis、QValueAxis、QChart、QChartView;
? ? ? ? QBarSet:表示一组条形图。一组条形图包含每个类别的一个数据值。假设set的第一个值属于第一类,第二类属于第二类,以此类推。如果set的值少于类别的值,则假定缺少的值在set的末尾。对于集合中间的缺失值,使用数值0;
? ? ? ? QBarSeries:表示以条形显示的一系列数据。该类的目的是将条形图作为组来绘制,其中同一类别中的条形图是挨个分组的。QBarSeries将数据从集合分组到类别,这些类别由QStringList定义;
? ? ? ? QBarCategoryAxis类用于操作图表的轴,可以设置为显示带有勾号、网格线和阴影的轴线,在刻度之间画出类别;
? ? ? ? QValueAxis类用于操作图表轴,可以设置为显示带有勾号、网格线和阴影的轴线,轴的值绘制到刻度的位置;
? ? ? ? QChart是一个可以在QGraphicscene中显示的控件;
? ? ? ? QChartView是一个可以显示图表的独立控件;
3、实例效果
实例效果如下图:
4、关键代码片段
//组织数据//
QBarSet *set0 = new QBarSet(QString::fromLocal8Bit("简"));
QBarSet *set1 = new QBarSet(QString::fromLocal8Bit("约翰"));
QBarSet *set2 = new QBarSet(QString::fromLocal8Bit("艾克斯"));
QBarSet *set3 = new QBarSet(QString::fromLocal8Bit("玛丽"));
QBarSet *set4 = new QBarSet(QString::fromLocal8Bit("萨曼莎"));
*set0 << 1 << 2 << 3 << 4 << 5 << 6;
*set1 << 5 << 0 << 0 << 4 << 0 << 7;
*set2 << 3 << 5 << 8 << 13 << 8 << 5;
*set3 << 5 << 6 << 7 << 3 << 4 << 5;
*set4 << 9 << 7 << 5 << 3 << 1 << 2;
QBarSeries *series = new QBarSeries();
series->append(set0);
series->append(set1);
series->append(set2);
series->append(set3);
series->append(set4);
//图形中添加显示数据//
QChart *chart = new QChart();
chart->addSeries(series);
chart->setTitle(QString::fromLocal8Bit("柱状图绘制实例"));
chart->setAnimationOptions(QChart::SeriesAnimations);
//坐标轴//
QStringList categories;
categories << QString::fromLocal8Bit("1月") << QString::fromLocal8Bit("2月") << QString::fromLocal8Bit("3月")<<QString::fromLocal8Bit("4月")<< QString::fromLocal8Bit("5月")<<QString::fromLocal8Bit("6月");
QBarCategoryAxis *axisX = new QBarCategoryAxis();
axisX->append(categories);
chart->addAxis(axisX, Qt::AlignBottom);
series->attachAxis(axisX);
QValueAxis *axisY = new QValueAxis();
axisY->setRange(0,15);
chart->addAxis(axisY, Qt::AlignLeft);
series->attachAxis(axisY);
//显示图例//
chart->legend()->setVisible(true);
chart->legend()->setAlignment(Qt::AlignBottom);
//图形显示控件//
QChartView *chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing);
chartView->setRubberBand(QChartView::HorizontalRubberBand);
?5、实例源码获取
? ? ? ? 完整的实例代码,请在在笔者的下载中心搜索下载(查找本博客同名标题资源进行下载)。如有任何发现任何问题或者疑问,可以留言或者联系作者进行反馈哦!源码下载链接:点击下载。
?
?
?
?
?
?
原文:https://blog.51cto.com/u_7265851/3314146