最近使用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函數更新數據