Qt开源作品5-仪表盘交互

2020-04-29 10:03:30 浏览数 (1)

一、前言

Echart是百度研发团队开发的一款报表视图JS插件,功能十分强大,是本人用过的国产作品中最牛逼的,记得四五年前就在qt中使用过,当时用的浏览器控件是webkit,由于5.6以后的版本不再支持webkit,而换用webengine内核,很多人在下载使用后不能正常编译,今天特意抽空做个webengine版本,使得同时支持webkit和webengine。

在webkit中执行JS用的是webView->page()->mainFrame()->evaluateJavaScript(js);

而webengine用的是webView->page()->runJavaScript(js);

在执行效率上,webengine甩webkit好几条街,在拖动滑块动态设置值的时候,webengine的CPU占用只有1%,而webkit居然达到了7%,恐怖!怪不得webkit逐渐被qt抛弃了,webengine只是内存使用上增加了些。

二、代码思路

代码语言:txt复制
第一步:准备网页文件
```c  

<html>

<head>

代码语言:txt复制
<meta charset="utf-8">
代码语言:txt复制
<title>ECharts</title>
代码语言:txt复制
<script src="echarts.min.js"></script>

</head>

<body>

代码语言:txt复制
<div id="main" style="height:300px;"></div>

</body>

</html>

代码语言:txt复制
第二步:准备JS函数
```c  

function setGaugeValue(value){

代码语言:txt复制
var option = {
代码语言:txt复制
tooltip : {
代码语言:txt复制
    formatter: "{a} <br/>{b} : {c}%"
代码语言:txt复制
},
代码语言:txt复制
toolbox: {
代码语言:txt复制
    feature: {
代码语言:txt复制
        restore: {},
代码语言:txt复制
        saveAsImage: {}
代码语言:txt复制
    }
代码语言:txt复制
},
代码语言:txt复制
series: [
代码语言:txt复制
    {
代码语言:txt复制
        name: '业务指标',
代码语言:txt复制
        type: 'gauge',
代码语言:txt复制
        detail: {formatter:'{value}%'},
代码语言:txt复制
        data: [{value: value, name: '完成率'}]
代码语言:txt复制
    }
代码语言:txt复制
]

};

代码语言:txt复制
第三步:数据交互
```c  

void Widget::on_horizontalSlider_valueChanged(int value)

{

代码语言:txt复制
QString js = QString("setGaugeValue(%1)").arg(value);

#ifdef webkit

代码语言:txt复制
webView->page()->mainFrame()->evaluateJavaScript(js);

#else

代码语言:txt复制
webView->page()->runJavaScript(js);

#endif

}

代码语言:txt复制

三、效果图

echartgauge.gifechartgauge.gif

四、开源主页

以上作品完整源码下载都在开源主页,会持续不断更新作品数量和质量,欢迎各位关注。

  1. 国内站点:https://gitee.com/feiyangqingyun/QWidgetDemo
  2. 国际站点:https://github.com/feiyangqingyun/QWidgetDemo
  3. 个人主页:https://blog.csdn.net/feiyangqingyun
  4. 知乎主页:https://www.zhihu.com/people/feiyangqingyun/

0 人点赞