Qt QChart縮放后坐標軸間隔取整


使用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 }

這樣每次人工選擇縮放區域都能變化到可取整的區域,效果:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM