qchart 坐标轴设置_qt qchart缩放后坐标轴间隔取整

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

如图:

0c2f0c689a1075fb6d117bd6a94cf5fd.png

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

db503c926cc2c4910cb6b81b8010cfd7.png

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

1 mAyis0->setTickCount(9); //会划分成几个单位·

2 mAyis0->setRange(-100,700);3 mAyis0->setLabelFormat("%d"); //设置刻度的格式

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

7848c1a97fef4c3b9139646cc3fa0f50.png

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

connect(mAyis0,SIGNAL(rangeChanged(qreal, qreal)),this,SLOT(mAyis0_rangeChanged(qreal, qreal)));

然后在坐标范围变化时,首先给最小值取整,然后将最大值变化到间隔可以取整的值。

1 voidMainWindow::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 }

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

fc8367117cf6e472b7bad1405a25b447.png

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值