一、前言
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复制
三、效果图
四、开源主页
以上作品完整源码下载都在开源主页,会持续不断更新作品数量和质量,欢迎各位关注。
- 国内站点:https://gitee.com/feiyangqingyun/QWidgetDemo
- 国际站点:https://github.com/feiyangqingyun/QWidgetDemo
- 个人主页:https://blog.csdn.net/feiyangqingyun
- 知乎主页:https://www.zhihu.com/people/feiyangqingyun/