找回密码
 立即注册
收起左侧

QT编写Echart动态交互示例(仪表盘)

4
回复
10684
查看
[复制链接]
累计签到:7 天
连续签到:1 天
来源: 2016-5-6 09:57:42 显示全部楼层 |阅读模式
之前发过一个帖子:qt与echarts配合打造最强图表库 http://www.qtcn.org/bbs/read-htm-tid-59111.html 有很多人问如何实现与图表的交互,如果用重复生成html的形式重新加载网页,很费CPU的,极不可取。
这次重新研究了下webkit与JS交互的方法,特意写了下Echart动态交互示例(仪表盘),分享下。
PS:亲测Qt4.7.0 Qt4.8.7 Qt5.4.1 Qt5.7.0。

代码极为简洁:
  1. #include "widget.h"
  2. #include "ui_widget.h"
  3. #include <QtWebKit>
  4. #if (QT_VERSION > QT_VERSION_CHECK(5,0,0))
  5. #include <QtWebKitWidgets>
  6. #endif

  7. Widget::Widget(QWidget *parent) :
  8.     QWidget(parent),
  9.     ui(new Ui::Widget)
  10. {
  11.     ui->setupUi(this);
  12.     ui->webView->load(QUrl(qApp->applicationDirPath() + "/gauge.html"));
  13. }

  14. Widget::~Widget()
  15. {
  16.     delete ui;
  17. }

  18. void Widget::on_horizontalSlider_valueChanged(int value)
  19. {
  20.     QString js = QString("init(%1)").arg(value);
  21.     ui->webView->page()->mainFrame()->evaluateJavaScript(js);
  22. }
复制代码
  1. <html>
  2. <head>
  3.     <meta charset="utf-8">
  4.     <style type="text/css">
  5.         html,body{height:100%;width:100%;margin:0px;padding:0px;}
  6.         #main{height:100%;width:100%;}
  7.     </style>
  8.     <script src="echarts.min.js"></script>
  9. </head>
  10. <body>   
  11.     <div id="main"></div>   
  12. </body>
  13. </html>

  14. <script type="text/javascript">        
  15.     var myChart = echarts.init(document.getElementById('main'));
  16.     function init(currentValue){
  17.         var option = {
  18.         tooltip:{formatter:"{a}
  19. {b} : {c}%"},
  20.         toolbox:{feature:{restore:{},saveAsImage:{}}},
  21.         series:[{name: '业务指标',type: 'gauge',detail: {formatter:'{value}%'},data: [{value: currentValue, name: '完成率'}]            }]};
  22.         myChart.setOption(option);
  23.     }      

  24.     window.onresize = myChart.resize ;
  25.     init(0);
  26. </script>
复制代码
源码下载:
QT集成的webkit模块非常强大,在ARM上也可以用,与WEB结合可以做出非常好的作品。
近期完成的一个项目截图(webkit与百度地图交互):


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

累计签到:384 天
连续签到:1 天
2018-1-22 08:45:36 显示全部楼层
在Qt5.6.0下无法运行诶,总提示    :-1: error: Unknown module(s) in QT: webkit webkitwidgets
回复 支持 反对

使用道具 举报

累计签到:25 天
连续签到:1 天
2018-2-8 08:56:44 显示全部楼层
huina_zhao 发表于 2018-1-22 08:45
在Qt5.6.0下无法运行诶,总提示    :-1: error: Unknown module(s) in QT: webkit webkitwidgets ...

用QWebView试试,调用方法一样。
回复 支持 反对

使用道具 举报

累计签到:384 天
连续签到:1 天
2018-2-9 08:01:31 显示全部楼层
好的,我试试看,谢谢你~
回复 支持 反对

使用道具 举报

累计签到:4 天
连续签到:4 天
2019-3-11 10:44:07 显示全部楼层
Echart导入JS数据,提高性能
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了