天天看點

Qt Qchart 中清空繪圖

原文位址::https://www.cnblogs.com/ybqjymy/p/13254287.html

相關文章

1、Qchart 中清空繪圖----https://blog.csdn.net/fsfsfsdfsdfdr/article/details/84628610

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

Qt Qchart 中清空繪圖

在别的部落格上說用這樣的函數,

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

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

Qt Qchart 中清空繪圖

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

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

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

Qt Qchart 中清空繪圖
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函數更新資料      
Qt Qchart 中清空繪圖

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

QVector<QPointF> points 清空然後replace

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