qml 调用echart 图表

前言

ECharts作为一个开源库,主要适用于html前端的图标绘制,但是按照理论来说,只要支持JS的语言,都可以使此控件。

我们知道QML中是支持JS的,所以在QT(QML)里使用ECharts来绘图也是可行的,ECharts要远比官方的QChart强大,并且由于JS跨平台的特性,所以使用ECharts来绘制图表会是一种很好的实现方式。

集成

  • 前往Echarts官网下载得到的echarts.js 文件
  • 在项目的 .pro文件里加上 QT += webengine
  • 在需要用到WebEngineView的qml文件里import QtWebEngine 1.4

使用WebEngineView加载html文件

68

  • MyWebView.qml

    import QtQuick 2.0
    import QtWebEngine 1.4
    Item {
    
        anchors.fill: parent
    
        WebEngineView{
            anchors.fill: parent
            url:"html/signs.html"
        }
    }
    
  • signs.html

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>ECharts</title>
        <!-- 引入 echarts.js -->
        <script src="echarts.js"></script>
    </head>
    <body>
        <div id="main" style="width: 600px;height:400px;"></div>
        <script type="text/javascript">
            // 基于准备好的dom,初始化echarts实例
            var myChart = echarts.init(document.getElementById('main'));
    
            // 指定图表的配置项和数据
            var option = {
                title: {
                    text: 'ECharts 入门示例'
                },
                tooltip: {},
                legend: {
                    data:['销量']
                },
                xAxis: {
                    data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
                },
                yAxis: {},
                series: [{
                    name: '销量',
                    type: 'bar',
                    data: [5, 20, 36, 10, 10, 20]
                }]
            };
    
            // 使用刚指定的配置项和数据显示图表。
            myChart.setOption(option);
        </script>
    </body>
    </html>
    
  • main.qml

    import QtQuick 2.7
    import QtQuick.Controls 2.0
    import QtQuick.Layouts 1.0
    
    ApplicationWindow {
        visible: true
        width: 640
        height: 480
        title: qsTr("Hello World")
    
        MyWebView{
    
        }
    }
    

注:译之后运行可以在界面上看见:(记得用release模式哦,debug模式下使用WebEngineView加载网页程序会崩溃)

# qml  

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×