QtCharts模块在QtWideget中图表绘制(非QML)
博客地址已更改,文章数量较多不便批量修改,若想访问源文请到 coologic博客 查阅,网址:www.coologic.cn
如本文记录地址为 techieliang.com/A/B/C/ 请改为 www.coologic.cn/A/B/C/ 即可查阅
版权声明:若无来源注明,Techie亮博客文章均为原创。 转载请以链接形式标明本文标题和地址:
本文标题:QtCharts模块在QtWideget中图表绘制(非QML) 本文地址:http://techieliang.com/2017/12/724/
1. 介绍
以前一直用QCustomPlot,现在Qt提供了QtCharts,看起来效果比,模块的帮助文档:QtCharts,所有官方的范例:Example
- 以QChartView提供界面显示,继承自QGraphicsView,setChart方法可以在一个view中添加一个chart
- 以QChart作为图表,提供颜色风格,动画效果风格,坐标轴控制,图例显示位置,以及QtCharts提供的一系列图表类型元素的增删改,同时QPolarChart提供极坐标图
- QAbstractSeries作为一系列图形类型的父类,以此接口实现了QAbstractBarSeries柱状图的接口, QAreaSeries面积图, QBoxPlotSeries箱形图, QCandlestickSeries(K线图), QPieSeries饼图和 QXYSeries(散点图/子类有线形图和曲线图),均提供了append等函数用于添加每一项数据
- QXXXXSet提供了复杂图形的每一项数据的添加比如QBoxPlotSeries的append函数不能添加int等基础类型QBoxSet,范例:BarChart Example
- QXXXXAxis提供了一系列坐标轴类,可以使用QChart::setAxisX/setAxisY设置,当然也可以使用QChart::createDefaultAxes使用默认坐标轴类型,范例:DateTimeAxis Example、Logarithmic Axis Example
- QLegend提供图例,范例:Legend Example
- QLegendMarker图例标记 ,QLegend提供的是图例框,里面的每一项应该用QLegendMarker,范例:LegendMarkers Example
- QXXXXMapper映射器,可以从QAbstractItemModel中的数据映射到图表,范例:BarModelMapper Example
2. QChart
提供了三个枚举类型
enum | AnimationOption { NoAnimation, GridAxisAnimations, SeriesAnimations, AllAnimations } |
enum | ChartTheme { ChartThemeLight, ChartThemeBlueCerulean, ChartThemeDark, ChartThemeBrownSand, …, ChartThemeQt } |
enum | ChartType { ChartTypeUndefined, ChartTypeCartesian, ChartTypePolar } |
分别用于定义动画效果、背景风格、以及图标类型是极坐标还是笛卡尔,对于风格方面请见范例Chart Themes Example
Animation不会自己播放,需要在图标刷新时有用,一个是坐标轴和图标网格线一个是series,比如柱状图逐渐升起的过程,最简单的刷新方法:改窗口尺寸
除此以外通过接口可以操作title标题、axis坐标轴,并通过addSeries添加图
3. 其他
- 建议使用Mapper映射到model中,通过修改model可以动态调整表格
- QtCharts的new出的对象都会在add、set以后由上一级管理,不需要主动delete
转载请以链接形式标明本文标题和地址:Techie亮博客 » QtCharts模块在QtWideget中图表绘制(非QML)