c/c++语言开发共享qt qchart缩放后坐标轴间隔取整

使用qt的qchart显示数据曲线,坐标轴QValueAxis可以设置刻度间隔数量,但每个刻度的数值是根据坐标的极值除以间隔数量得到的,不一定是整数,导致曲线控件的显示刻度不适合观察。 如图: 纵坐标刻度带有小数,观察数据曲线时,就不容易计算曲线的波动。解决方法很简单,就是设置曲线坐标范围后,根据坐 …

 

使用qt的qchart显示数据曲线,坐标轴qvalueaxis可以设置刻度间隔数量,但每个刻度的数值是根据坐标的极值除以间隔数量得到的,不一定是整数,导致曲线控件的显示刻度不适合观察。

如图:

qt qchart缩放后坐标轴间隔取整

纵坐标刻度带有小数,观察数据曲线时,就不容易计算曲线的波动。解决方法很简单,就是设置曲线坐标范围后,根据坐标范围计算设置间隔数量,让每个刻度都是整数,例如:

qt qchart缩放后坐标轴间隔取整

范围-100~700,共8个区域,9个刻度,所以:

1 mayis0->settickcount(9); //会划分成几个单位· 2 mayis0->setrange(-100,700); 3 mayis0->setlabelformat("%d"); //设置刻度的格式

这样就解决了初始化时曲线控件的坐标轴间隔取整问题,但是曲线控件显示过程中认为进行缩放,坐标轴间隔就会随着人画的缩放区域变化,出现小数(不整的数)。

qt qchart缩放后坐标轴间隔取整

所以还需要加入坐标轴对范围变化的响应,例如,要将坐标轴的刻度值设置成10的倍数:

connect(mayis0,signal(rangechanged(qreal, qreal)),this,slot(mayis0_rangechanged(qreal, qreal)));
然后在坐标范围变化时,首先给最小值取整,然后将最大值变化到间隔可以取整的值。
 1 void mainwindow::mayis0_rangechanged(qreal min, qreal max)  2 {  3     u32 mi=min,ma=max;  4     u32 t0=mi%10;  5     if(t0)  6     {  7         mi+=10-t0;  8     }  9     u32 t=ma-mi; 10     t0=t%80; 11     if(t0) 12     { 13         ma+=80-t0; 14     } 15     mayis0->setrange(mi,ma); 16 }

这样每次人工选择缩放区域都能变化到可取整的区域,效果:

qt qchart缩放后坐标轴间隔取整

 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/608167.html

(0)
上一篇 2021年5月15日
下一篇 2021年5月15日

精彩推荐