Qt Qchart 中清空繪圖


最近使用Qchart畫圖也是要畫瘋的節奏,最近又碰到了疑難雜症,在網chart匯入線條后,想把他們清除掉,結果發現怎么也清除不了,

在別的博客上說用這樣的函數,

1 m_series1->clear(); 2 m_scatseries1->clear();

然而結果卻是變成下面這個樣子:

內心很狂躁,后來仔細研究了下QLineSeries類的append和replace這個兩個函數,

為什么會出現上面得我問題,其實是畫圖的時候將數據點使用append方法進行繪圖,這個函數實際上在之前線條的基礎上添加數據,因此就會發現出現直勾勾的回拉線,使用clear方式也無法將數據刪除,但是當我使用了replace方法后, 這個方法就是講之前繪畫的點讀出來然后將添加的點加到pointf數組中,然后重新繪畫折線圖。

其實簡單的理解為就是使用append方式是有時間先后順序的,最后添加的點會與上一個點連接,但你想繪畫的線在你上一個點的左邊的時候,就會有回拉線的出現,實際上我們只希望這些點能連貫的連接起來,所以顯然這樣不合適了,因此使用replace方式。就像下面這種:

1 QVector<QPointF> Points = m_series0->pointsVector();
2 QVector<QPointF> Points2 = m_series0->pointsVector();
3 int i;
4 for(i = 0;i< len-8 ;i++)
5 {
6     Points[i] = Points2[i+1];
7 }
8 Points[i]=QPointF(t.toMSecsSinceEpoch(),data.real); 加入新點
9 viewtool->m_series0->replace(Points); //利用replace函數更新數據

當你想清空所有線條時可以將

QVector<QPointF> points 清空然后replace

1 QVector<QPointF> points ;//清空然后replace
2 m_SplineSeries->replace(points); //利用replace函數更新數據

 


免責聲明!

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



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