天天看點

QML在Charts中動态修改Series(LineSeries, ScatterSeries, ,SplineSeries)的值

        項目需要對Charts中的圖表動态的修改Series中資料的值,通過檢視幫助文檔,發現QML   Charts中關于XYSeries的方法的說明如下圖,共7個方法,其中資料替換的方法replace隻寫了一種通過點的值進行替換的方法。

QML在Charts中動态修改Series(LineSeries, ScatterSeries, ,SplineSeries)的值

        檢視ScatterSeries對應C++的源碼檔案declarativescatterseries_p.h,其中關于replace函數注冊了兩種方法,第一種為文檔中描述的根據點進行替換,第二種文檔中未進行闡述,根據點的index進行替換,如圖:        

QML在Charts中動态修改Series(LineSeries, ScatterSeries, ,SplineSeries)的值

 而通過檢視ScatterSeries等Series的父類 QXYSeries源碼後發現,QXYSeries提供了詳細的實作方法,感興趣的可自己檢視,如圖

QML在Charts中動态修改Series(LineSeries, ScatterSeries, ,SplineSeries)的值

         是以根據資料index動态替換Series的資料的方法

replace(int index, qreal newX, qreal newY)      

示例:

function resetSeries(){
    for(var i=0;i<series.count;i++){
        series.replace(i,i,100)
    }
}
           

效果圖 

QML在Charts中動态修改Series(LineSeries, ScatterSeries, ,SplineSeries)的值

 注意:在Series中修改資料的值比remove後再insert效率要高很多,特别是資料量特别大的時候,remove的時候很可能界面就卡死了,是以在動态修改Series值首選替換資料值!