说明:
下面的XX.XX.XX为Qt的版本号,如:5.14.1。
下面总结的都是以Qt的5.14.1版本来说明的,未来的版本也许和这有些不同。
因为Qt自带的例子很多,本博文是第3部分,第1、2、4、5、6部分请参见如下链接:
- 《Qt Example各例子技术点说明(一)》。
- 《Qt Example各例子技术点说明(二)》。
- 《Qt Example各例子技术点说明(四)》。
- 《Qt Example各例子技术点说明(五)》。
- 《Qt Example各例子技术点说明(六)》。
1.charts
本大节展示Qt绘制各种折线图、曲线图、区域图、饼状图、直方图等。各种图的样例请参考:
《利用QChart绘制各种图的汇总说明》博文。
1.1 areachart
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\areachart
本工程展示利用Qt的QAreaSeries绘制区域图。通过本工程,需要掌握如下知识点:
- QAreaSeries、QLineSeries用法,及如何利用这两个类绘制区域图。
- QChart、QChartView用法。
1.2.audio
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\audio
本工程利用Qt的QAudioDeviceInfo、QAudioFormat、QAudioInput类,将本机音频输入设备(如:笔记本电脑中的麦克风)采集到的音频数据通过QLineSeries折线类实时动态画出。通过本工程要掌握如下知识点:
- 通过QAudioDeviceInfo类获取本机音频设备信息,如:获取麦克风信息。
- QAudioFormat类封装音频信息。
- QAudioInput类结合QAudioFormat类及自定义的QIODevice类采集输入本机的音频数据。
- 如何子类化QIODevice类。
- QLineSeries、QChartView、QValueAxis用法,并通过这几个类将采集带的音频数据绘制成折线。
1.3.barchart
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\barchart
本工程通过Qt的QBarSeries类展示直方图绘制技术。通过本工程需要掌握如下知识点:
- QBarSeries类用法。
- 利用QBarSeries、QBarSet绘制直方图。
- QBarCategoryAxis实现类别、分类坐标轴。
- QValueAxis用法。
- 利用QChartView、QChart类展示直方图。
1.4.barmodelmapper
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\barmodelmapper
本工程通过Qt的QVBarMpdelMapper类将自定义的QAbstractTableModel模型的数据关联到QBarSeries类,以实现直方图的绘制。通过本工程需要掌握如下知识点:
- QVBarMpdelMapper类用法。
- QBarSeries类用法。
- QBarCategoryAxis实现类别、分类坐标轴。
- QValueAxis用法。
- 利用QChartView、QChart类展示直方图。
- 如何自定义QAbstractTableModel模型,具体参见Qt自带例子Examples\Qt-XX.XX.XX\widgets\itemviews 目录,该目录很多关于自定义QAbstractTableModel模型的例子。
1.5.boxplotchart
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\boxplotchart
本工程展示了Qt的QBoxPlotSeries类用法,通过该类绘制boxplot图。通过本工程需要掌握如下知识点:
- QBoxPlotSeries类用法。
- QBoxSet类用法,及其和QBoxPlotSeries类的关系。
- 利用QChartView、QChart类展示QBoxPlotSerie图
1.6.callout
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\callout
本工程展示了Qt的QSplineSeries类用法,通过该类绘制折线图,将折线图加入场景。鼠标光标在折线上悬浮时,能显示鼠标光标点位于折线的点的坐标工具提示,点坐标工具提示可以钉住显示,即不消失。通过本工程需要掌握如下知识点:
- QSplineSeries类用法。
- QChart类的mapToValue函数用法。
- QGraphicsView、QGraphicsSimpleTextItem类用法。
- QGraphicsItem类的prepareGeometryChange函数作用。
- QGraphicsItem类的mousePressEvent、mouseMoveEvent鼠标按下、移动事件参数QGraphicsSceneMouseEvent类用法。
1.7.candlestickchart
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\candlestickchart
本工程通过QCandlestickSeries类绘制蜡烛架(台)图,通过本工程需要掌握如下知识点:
- QCandlestickSeries、 QCandlestickSet类用法。
- QChart、QBarCategoryAxis、QValueAxis、QChartView类用法及相互关系。
1.8.chartinteractions
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\chartinteractions
本工程展示鼠标左键拖动折线的点,将折线上的点拖动到想要的位置,从而改变原来的折线。通过本工程需要掌握如下知识点:
- 如何自定义QChart子类,即如何从QChart类派生出符合自己需求的子类,要注意QChart有个protected类的构造函数。掌握QChart::ChartType枚举类型各值含义,知道QChart::ChartTypePolar是表示极坐标曲线。
- 通过获取QLineSeries画笔,从而改变画笔宽度,从而改变所画折线的粗细。
- QXYSeries类pressed信号的用法及points()函数能返回线中所有的数据点。
- ChartView和QChart的关系及互动。
- 鼠标移动拖动折线上的点的算法及坐标在不同参照系下的转换。
1.9.chartthemes
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\chartthemes
本工程展示QChart各种曲线折线等的主题颜色、呈现时的动画样式。通过本工程需要掌握如下知识点:
- 会用QChart::ChartTheme枚举变量设置QChart各种曲线折线等的主题颜色。
- 会用QChart::AnimationOption枚举变量设置QChart各种曲线折线等首次在界面呈现时的动画样式。
- 会用Qt::AlignmentFlag枚举变量设置QChart的图例即QLegend对象的停靠方向。
- QXYSeries类pointsVector函数能返回线中所有的数据点。
- 掌握QLineSeries(折线图)、QAreaSeries(区域图)、QPieSeries(饼状图)的绘制。
- 如何利用QPieSlice作为QPieSeries(饼状图)基本构建元素绘制QPieSeries。
- QChartView和QChart的关系及互动。将QChart对象作为参数传入QChartView构造函数构造QChartView对象,在同一个窗体构建多个QChartView。
1.10.scatterchart
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\scatterchart
本工程展示QScatterSeries(离散点图)的绘制,通过本工程需要掌握如下知识点:
- QScatterSeries类用法。
- 如何绘制符合自己需求的离散点的形状符号,本例是通过在一个透明QImage绘制了一个五角星,然后将该五角星作为画刷来绘制离散点的形状。
1.11.piechart
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\piechart
本工程展示QPieSeries(饼状图)的绘制,通过本工程需要掌握如下知识点:
- 如何利用QPieSlice作为QPieSeries(饼状图)基本构建元素绘制QPieSeries。
- QChartView和QChart的关系及互动。
1.12.customchart
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\customchart
本工程自定义了Qchart,通过绘制一个折线,来展示相关技术点,通过本工程需要掌握:
- 如何更改QChart及X、Y轴的各种属性,如:QChart背景色、QChart背景是否可见、轴线画笔宽细、轴标签文本画刷、轴字体设置、轴网格线是否可见、阴影画笔、阴影是否可见等属性。
- QCategoryAxis轴用法。
1.13.datetimeaxis
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\datetimeaxis
本工程展示QDateTimeAxis类(日期时间轴)用法。通过本工程需要掌握对QDateTimeAxis轴各种属性的设置。
1.14.donutbreakdown
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\donutbreakdown
本工程展示多个饼状图叠加形成分割线式的、类似甜饼圈式的饼状图。通过本工程需要掌握如下知识点:
- 如何自定义QChart及如何自定义QPieSlice。
- 如何利用QPieSeries类绘制饼状图。
- 如何在同一个QChart对象上叠加多个饼状图,以形成甜饼圈式的饼状图。
- QPieLegendMarker类的使用。
- 通过饼状图类的setPieSize和setHoleSize函数控制中空圆圈大小,从而形成类似甜饼圈。
1.15.donutchart
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\donutchart
本工程展示甜饼圈式、圆内部中空的饼状图。通过本工程需要掌握如下知识点:
- 通过饼状图类的setHoleSize函数控制中空圆圈大小,从而形成类似甜饼圈。
- QPieSlice类的setExploded函数用法。
1.16.dynamicspline
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\dynamicspline
本工程通过定时器实现QSplineSeries对象的横纵坐标不停更新,从而实现一个滚动的QSplineSeries行进的曲线效果。
1.17.horizontalbarchart
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\horizontalbarchart
本工程展示一个水平方向的直方图,一般情况下的直方图是QBarSeries类表示,其是竖直方向的;而QHorizontalBarSeries类表示的直方图是水平方向的。通过本工程需要掌握如下知识点:
- 如何利用QHorizontalBarSeries绘制水平方向的直方图。
- QBarSet和QHorizontalBarSeries的关系。
- QBarCategoryAxis、QValueAxis类型坐标轴用法。
- QChartView、QChart、QLegend类用法及它们之间的关系。
1.18.horizontalpercentbarchart
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\horizontalpercentbarchart
本工程展示水平百分比图条、通过本工程需要掌握如下知识点:
- 利用QHorizontalPercentBarSeries类绘制水平百分比图条。
- QBarSet和QHorizontalPercentBarSeries的关系。
- QBarCategoryAxis、QValueAxis类型坐标轴用法。
- QChartView、QChart、QLegend类用法及它们之间的关系。
1.19.horizontalstackedbarchart
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\horizontalstackedbarchart
本工程展示水平栈图条、通过本工程需要掌握如下知识点:
- 利用QHorizontalStackedBarSeries类绘制水平栈图条。
- QBarSet和QHorizontalStackedBarSeries的关系。
- QBarCategoryAxis、QValueAxis类型坐标轴用法。
- QChartView、QChart、QLegend类用法及它们之间的关系。
1.20.legend
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\legend
本工程展示QChart的QLegend(图例)类的各种属性设置。通过本工程需要掌握如下知识点:
- 通过isAttachedToChart函数判断QLegend对象是否附加到QChart对象上。
- 通过detachFromChart、attachToChart函数将QLegend对象从QChart对象分离或附加到QChart对象。当附加时,QChart对象管理QLegend对象布局,即QChart对象布局变化时(如:窗口大小改变),QLegend对象布局也相应改变,而分离时,则不会。
- 如何设置QLegend对象的画刷、画笔、背景色可见、对齐方式、字体属性。
- 通过QBarSeries类的append、remove函数分别追加、移除直方图块。
1.21.legendmarkers
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\legendmarkers
本工程展示QLegendMarker类用法。通过本工程需要掌握QLegendMarker类对象的各种属性。须掌握如下知识点:
- 通过捕获QLegendMarker类的clicked信号,从而实现曲线的显示和隐藏,同时更改图例透明度。
- QLegendMarker类的type函数返回QLegendMarker::LegendMarkerType类型枚举,该枚举表示QLegendMarker类对象的类型。
- QLegendMarker类的labelBrush函数返回图例标签的画刷对象。
- QLegendMarker类的brush函数返回图例图标的画刷对象。
- QLegendMarker类的pen函数返回图例图标轮廓线的画笔对象。
1.22.lineandbar
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\lineandbar
本工程通过将1个QBarSeries对象和1个QLineSeries对象同时绘制在1个QChart上。通过本工程需要掌握如下知识点:
- 如何创建QBarSeries及QBarSeries和QBarSet的关系。
- 如何创建QLineSeries。
- QBarCategoryAxis、QValueAxis类型坐标轴用法。
- QChartView、QChart、QLegend类用法及它们之间的关系。
1.23.linechart
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\linechart
通过本工程需要掌握如下知识点:
- QLineSeries类对象的创建。
- QChartView、QChart、QLegend类用法及它们之间的关系。
1.24.logvalueaxis
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\logvalueaxis
本工程展示QLogValueAxis坐标轴(幂数坐标轴)用法。通过本工程需要掌握如下知识点:
- QLogValueAxis幂坐标轴类用法。
- QChartView、QChart、QLegend类用法及它们之间的关系。
1.25.modeldata
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\modeldata
本工程通过QVXYModelMapper类对象将QAbstractTableModel数据模型和QLineSeries类对象进行桥接,模型包含用于绘制QLineSeries类对象的X、Y坐标,当更改模型中的数据时,实现QLineSeries类对象的同步更改。通过本工程需要掌握如下知识点:
- QVXYModelMapper类用法及和QLineSeries类对象的不同互动。
- QVXYModelMapper类和QAbstractTableModel的关系。
- 如何子类化QAbstractTableModel类。
- QChartView、QChart、QLegend类用法及它们之间的关系。
1.26.piechartdrilldown
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\piechartdrilldown
本工程通过点击饼状图的某个片元,实现在两个饼状图之间切换显示。通过本工程需要掌握如下知识点:
- 如何从QChart派生符合自己需求的图表类对象。
- 如何从饼状图片元QPieSlice类派生出符合自己需求的饼状图片元。
- 饼状图类QPieSeries的clicked信号的用法。
1.27.polarchart
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\polarchart
本工程演示如何绘制极坐标,通过本工程需要掌握如下技术点:
- QPolarChart类用法及利用该类绘制极坐标。
- 如何从QChartView类派生出符合自己需求的子类。
- 如何在QChartView类,实现键盘按键在非极坐标图和极坐标图的切换。
- 如何在QChartView类,实现键盘按键上、下、左、右滚动图表。
- QChart类的series、axes、removeSeries等函数的使用。
- 如何将一个已有QChart类对象的series、axes原样附加到另一个QChart类对象上。
1.28.scatterinteractions
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\scatterinteractions
本工程通过构建两条QScatterSeries类对象,鼠标点击其中一个QScatterSeries对象的点使该点移除到另一个QScatterSeries类对象上去,给人眼的感觉是同一个QScatterSeries的点,鼠标单击后变色了。通过本工程需要掌握如下技术点:
1.29.splinechart
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\splinechart
本工程展示如何绘制QSplineSeries图。通过本工程需掌握如下技术点:
- QSplineSeries类用法。
1.30.stackedbarchart
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\stackedbarchart
本工程展示如何绘制QStackedBarSeries图。通过本工程需掌握如下技术点:
- QStackedBarSeries类用法。
1.31.stackedbarchartdrilldown
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\stackedbarchartdrilldown
本工程通过点击QStackedBarSeries的某个片元,实现在两个QStackedBarSeries图对象之间切换显示。通过本工程需要掌握如下知识点:
- 如何从QChart派生符合自己需求的图表类对象。
- 如何从QStackedBarSeries派生出子类。
- QStackedBarSeries类QPieSeries的clicked信号的用法。
1.32.temperaturerecords
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\temperaturerecords
本工程通过点击QStackedBarSeries类绘制温度记录图,将12个月的最低、最高温度绘制出来。通过本工程需掌握如下技术点:
- QStackedBarSeries用法。
- QBarCategoryAxis、QValueAxis坐标轴用法。
- QChart、QChartView、QLegend类用法及它们之间的关系。
1.33.zoomlinechart
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\zoomlinechart
该工程展示通过键盘按键上、下、左、右滚动QLineSeries类对象,在支持触摸功能的情况下,利用手势拖动、缩放QLineSeries类对象;在不触摸功能的情况下,可按下鼠标左键框选一段将曲线放大、按下鼠标右键将曲线缩小。通过本工程需要掌握如下技术点:
- 如何绘制类QLineSeries对象。
- grabGesture函数安装手势动作类型。
- 手势动作类型枚举Qt::GestureType各值含义。
- QChart类的sceneEvent事件的拦截。
- QChartView子类化及在QChartView中如何上、下、左、右滚动QChart类对象,即 QChart类zoom、scroll、zoomIn、zoomOut函数用法。
- 手势相关QGestureEvent、QPanGesture、QPinchGesture类的用法。如果想要学习更多手势相关的知识,请参见Qt安装目录下的如下工程:
Examples\Qt-XX.XX.XX\widgets\gestures\imagegestures
1.34.multiaxis
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\multiaxis
本工程展示在一个QChart上放置左、下、右多个坐标轴坐标轴的实现。通过本工程需要掌握如下知识点:
- 如何在一个QChart上放置多个坐标轴坐标轴。
- QCategoryAxis、QSplineSeries、QValueAxis类的用法
- QChartView、QChart、QLegend类用法及它们之间的关系。
1.35.nesteddonuts
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\nesteddonuts
本工程将多个饼状图嵌套放置在一起,形成一个嵌套的多饼状图,通过定时器改变饼状图各片角度,从而实现饼状图动态变化效果;通过鼠标在饼状图片上悬浮,改变饼状图片角度。通过本工程需要掌握如下知识点:
- 如何将多个饼状图嵌套。
- 对饼状图片的hovered信号的理解。
- 饼状图类的HoleSize、PieSize、PieStartAngle、PieEndAngle属性的掌握。
- 饼状图片类的Exploded、LabelVisible、LabelColor、LabelPosition属性的掌握。
1.36.percentbarchart
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\percentbarchart
本工程展示QPercentBarSeries类的使用,通过该类展示百分比图谱用法。通过本工程需要掌握如下知识点:
- 掌握QPercentBarSeries类的使用。
- QCategoryAxis、QSplineSeries、QValueAxis、QBarSet类的用法
- QChartView、QChart、QLegend类用法及它们之间的关系。
1.37.piechartcustomization
该工程存放在Qt安装目录下的
Examples\Qt-XX.XX.XX\charts\piechartcustomization
本工程读取QPieSeries及QPieSeries类的片元类QPieSlice的各种属性到窗体部件,从窗体部件更改QPieSeries类的片元类QPieSlice的各种属性值,通过本工程需要掌握:
- 如何子类化QPieSlice,即如何从QPieSlice派生符合自己业务需求的饼状片元。
- QPieSlice类的hovered信号的理解和使用。
- QPieSeries类的clicked信号的理解和使用。
- QChart类的AnimationOption枚举值,掌握各种曲线呈现动画效果。
- QChart类的QChart::ChartTheme枚举值,掌握各种曲线风格效果。
- 饼状图QPieSeries类的horizontalPosition、verticalPosition、pieSize、pieStartAngle、pieEndAngle、holeSize属性。
- 饼状图片元类QPieSlice的label、value、pen、brush、labelPosition、labelArmLengthFactor、exploded、exploded、labelBrush属性。
由于Qt官方自带的例子很多,一下看不完,每看完一个例子,记录一个。未完,待续!