qt qchart缩放后坐标轴间隔取整
2018-09-18 06:24:24来源:博客园 阅读 ()
使用qt的qchart显示数据曲线,坐标轴QValueAxis可以设置刻度间隔数量,但每个刻度的数值是根据坐标的极值除以间隔数量得到的,不一定是整数,导致曲线控件的显示刻度不适合观察。
如图:
纵坐标刻度带有小数,观察数据曲线时,就不容易计算曲线的波动。解决方法很简单,就是设置曲线坐标范围后,根据坐标范围计算设置间隔数量,让每个刻度都是整数,例如:
范围-100~700,共8个区域,9个刻度,所以:
1 mAyis0->setTickCount(9); //会划分成几个单位· 2 mAyis0->setRange(-100,700); 3 mAyis0->setLabelFormat("%d"); //设置刻度的格式
这样就解决了初始化时曲线控件的坐标轴间隔取整问题,但是曲线控件显示过程中认为进行缩放,坐标轴间隔就会随着人画的缩放区域变化,出现小数(不整的数)。
所以还需要加入坐标轴对范围变化的响应,例如,要将坐标轴的刻度值设置成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 }
这样每次人工选择缩放区域都能变化到可取整的区域,效果:
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash