时间:2021-05-20
设置初始的显示的区间,常用的有两种方法
(1)自动
lineseries = new QLineSeries();//声明折线数据集lineseries->append(4, 10); //填充数据集*lineseries << QPointF(13, 5) << QPointF(17, 6); lineChart = new QChart();//创建图表lineChart->addSeries(lineseries); // 将 数据集 添加至图表中lineChart->createDefaultAxes();//根据数据集,自动创建坐标轴,坐标轴的区间恰好完全容纳已有的数据集//lineChart->axisX()->setRange(0, 45);//也可随时手动调节要显示的坐标区间(2)手动指定要显示的区间(注意,轴变量如axisX一定要是静态的/动态new/malloc的.r如果声明成了局部临时变量,变量一旦出栈后,轴就不显示了)
lineseries = new QLineSeries();//声明折线数据系列lineseries->append(4, 10); //填充数据集*lineseries << QPointF(13, 5) << QPointF(17, 6); lineChart = new QChart();//创建图表lineChart->addSeries(lineseries); // 将 数据集 添加至图表中 QValueAxis *axisX = new QValueAxis();//轴变量、数据系列变量,都不能声明为局部临时变量QValueAxis *axisY = new QValueAxis();//创建X/Y轴axisX->setRange(0, 100);axisY->setRange(-5, 5);//设置X/Y显示的区间lineChart->setAxisX(axisX);lineChart->setAxisY(axisY);//设置chart的坐标轴lineseries->attachAxis(axisX);//连接数据集与坐标轴。特别注意:如果不连接,那么坐标轴和数据集的尺度就不相同,显示下面才是重点!
前面讲的是,设置初始的显示区间,那么如何在程序中实时的修改显示的区间呢?
任务描述:把当前的图形沿X轴放大2倍,Y轴不放缩。
解决方案:任务要求X放大两倍,也即把X的显示区间缩小为原先的1/2,也即,我们必须首先得到当前的显示区间才行。难点来了:lineChart->axisX(pSeries)的返回值是QAbstractAxis类型,这个类型并没有提供坐标轴区间的min和max成员变量,也没有提供getMin和getMax方法。
由以上程序可知,不同类型的chart,坐标轴axis的类型也是不同的,在void QChart::createDefaultAxes()的帮助中有:
XY图(折线图、曲线图)、条形图、饼图坐标轴类型都是不同的,但他们都继承了QAbstractAxis。
折线图的坐标轴的类型为QValueAxis或者QDateTimeAxis,这两个类是有min和max成员的,这样解决方法就有了,我们非常确信的知道,lineChart->axisX(pLineSeries)的返回值类型虽然是QAbstractAxis,但其本质肯定是QValueAxis或者QDateTimeAxis,如果程序员心里清楚轴的类型,就可以大胆的进行转换,这一转换肯定是安全的。
QValueAxis *axisX = (QValueAxis*)(lineChart->axisX(pLineSeries));//父类转子类 int interval_len = axisX->max() - axisX->min();//求当前的区间长度lineChart->axisX()->setRange(axisX->min(), axisX->min() + interval_len/2);//区间缩小1/2=图像放大2倍如果担心转换的安全性,也可以用动态转换:
QValueAxis *axisX = dynamic_cast<QValueAxis*>(lineChart->axisX(pLineSeries));if(NULL == axisY){ qDebug() << "转换失败,lineChart->axisX()的内存内容根本不是QValueAxis类型或者QValueAxis的子类";} QDateTimeAxis *axisDataX = dynamic_cast<QDateTimeAxis *>(lineChart->axisX(pLineSeries));{ qDebug() << "转换失败,轴类型不是QDateTimeAxis或者其子类";}本文介绍了Qt曲线图表模块QChart库读取/设置X轴的显示区间,更多关于Qt曲线图表模块QChart库的知识请查看下面的相关链接
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
如何编译安装QChart请查看下面文章Qt图形图像开发之曲线图表库QtChart编译安装详细方法与使用实例使用Qt曲线图表模块Chart库首先要注意3点:(1)
在制作EXCEL表图形中,有时如果将曲线设置成从Y轴开始,将大大提高美观度1、输入需要汇总曲线图的数据。2、选中数据做折线图。3、得到折线图。4、对X轴进行设置
Qt曲线图模块QCustomPlot库介绍QCustomPlot是一个小型的Qt画图标类,支持绘制静态曲线、动态曲线、多重坐标曲线,柱状图,蜡烛图等前段时间用Q
Qt曲线图表库QtChart简介Qt的线性绘图控件有大名鼎鼎的Qwt,ChartDirector,小巧玲珑的QCustomPlot,当然还有自家的QtChart
Qt曲线图模块QCustomPlot库介绍QCustomPlot是一个小型的Qt画图标类,支持绘制静态曲线、动态曲线、多重坐标曲线,柱状图,蜡烛图等。只需要在项