1. 程式人生 > >利用QT的WebKit模組實現CS架構前端介面echarts顯示

利用QT的WebKit模組實現CS架構前端介面echarts顯示

由於專案原因,經常需要在前端展現各種統計效果,而CS架構每次用QT做圖既繁瑣又不美觀。利用百度的開源echarts控制元件完美解決。

1、qt版本4.8.5,echarts3,

2、qt中需要包含的標頭檔案為:QWebView,QtWebKit,QWebFrame

3、QT向JavaScript中傳遞資料主要通過evaluateJavaScript函式進行

4、QT通過json字串和JavaScript之間進行資料互動

一、以下為C++程式碼段:

完成qt向JavaScript傳遞引數:

    QString str = QString("ReceiveData(\"%1\")").arg(json_str);
    ui->webView->page()->mainFrame()->evaluateJavaScript(str);

其中,ReceiveData是JavaScript中接收qt傳遞json字串的函式名 ,“%1”表示引數1

如果傳遞兩個引數則為:

QString cmd = QString("ReceiveData(\"%1\",\"%2\")").arg(firJson).arg(lstJson);

 注意:json_str為JSON字串,將傳遞的引數轉換為JSON字串,在JavaScript中方便解析。

二、以下為JavaScript程式碼段:

function ReceiveData(jsondata){
        //TODO 由json字串轉化為json物件
        var json = JSON.parse(jsondata);
        option.title.text=json.title;
        //根據傳遞的引數修改echarts圖表中option的引數,完成圖表資料的展現
        // 修改完成後實用setOption來設定圖表。
        myChart.setOption(option);
}

三、解釋下echarts的使用

我們可以在github上下載echarts原始碼,在test目錄下可以看到很多例項,一般來說

ECharts程式碼的結構為:

<!DOCTYPE html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>ECharts</title>
</head>
<body>
    <!-- 1.為ECharts準備一個具備大小(寬高)的Dom -->
    <div id="main" style="width:800px;height:400px;margin: 0 auto;" ></div>
    <!-- 2.ECharts單檔案引入 -->
    <script src="js/echarts-plain.js"></script> 
    
    <script type="text/javascript">
        <!-- 3.基於準備好的dom,初始化echarts圖表 -->
        var myChart = echarts.init(document.getElementById('main')); 
        
        <!-- 4.Option引數 -->
        <!-- 省略Option程式碼 -->
        <!-- 5.載入資料  -->
        myChart.setOption(option); 
    </script>
</body>

可以看到,使用ECharts最簡單的只有5個步驟。使用不同的報表,那麼只需要改變第4步中Option的引數即可。而利用我們二中的JavaScript程式碼段即可完成這個功能。

最後,對option常用的幾個引數進行說明:

title :圖形的標題

tooltip :滑鼠移上去的提示

legend :圖例

toolbox :工具箱

xAxis:X軸

yAyis:Y軸

Series:資料集