时间:2022-04-17 08:58:27 | 栏目:C代码 | 点击:次
用过echart的人都会遇到一个问题,就算是代码中写了window.onresize = echart.resize,也只是横向自适应拉伸填充页面,垂直方向不会变化,除非指定高度才可以,这就比较郁闷了,为何echart本身不会自适应呢?按道理不应该啊,莫非实现起来很困难?好吧先不管这个了,这个问题搜索出来一大堆解决方案,在Qt的浏览器控件中也有这个问题,为了解决这个问题想了两个策略,一种是程序本身检测尺寸变化,然后重新设置高度并载入网页,一种是js函数设置对应的宽高,什么时候执行呢,就是在程序界面尺寸变化的时候,两种办法对比下来,最终选用的后者,因为效果比较好,还是异步执行的,无需重新加载网页,那个每次高度变化了就重新加载网页的办法在早期的作品中用过,看起来好傻逼比的。
体验地址:https://pan.baidu.com/s/1Ie1xGLv7tSL-9vfsv28w1Q 提取码: wf4f 文件名:bin_map.zip
国内站点:https://gitee.com/feiyangqingyun
国际站点:https://github.com/feiyangqingyun
//设置窗口大小变动echarts自动拉伸填充,此方法只能横向拉伸 list << QString(" window.onresize = echart.resize;"); //下面的方法用来设置画布的宽度高度 list << QString(" function resize(width, height) {"); list << QString(" var chart = document.getElementById('chart');"); list << QString(" chart.style.width = width + \"px\";"); list << QString(" chart.style.height = height + \"px\";"); list << QString(" echart.resize();"); list << QString(" }"); void frmEcharts::resizeMap() { if (isLoad) { #ifdef webkit QString js = QString("resize(%1, %2)").arg(webView->width()).arg(webView->height()); webView->page()->mainFrame()->evaluateJavaScript(js); #elif webengine QString js = QString("resize(%1, %2)").arg(webView->width()).arg(webView->height()); webView->page()->runJavaScript(js); #endif } }