博客地址已更改,文章數量較多不便批量修改,若想訪問源文請到 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)