QT Echarts 联动共享数据表图 使用详解

news2025/1/21 1:00:14

        Echarts是百度的一款可视化界面开发的平台,里面的地图以及数据可视化内容十分丰富,适合用于一些大屏数据显示项目或者一些ui界面开发。每一个ECharts图表使用一个无边框的QWebView来展示,这样多个不同类型的ECharts图表就是多个封装不同类型ECharts图表的QWebView(html加载入QWebView窗口来实现),每一个模块封装的数据用qt预留接口调用js代码实现修改html的功能,最终达到代码操作qt即可操作图表的功能。

本文作者原创,转载请附上文章出处与本文链接。

QT Echarts 联动共享数据表图 使用详解目录

1 新建文件

2 加载HTML

3 调用表图

4 pro文件

5 ui文件

 6 说明

7 其它文章


1 新建文件

        先下载ECharts.JS文件将JS文件和html文件放在同一目录下

        示例地址:Examples - Apache ECharts

setTimeout(function () {
  option = {
    legend: {},
    tooltip: {
      trigger: 'axis',
      showContent: false
    },
    dataset: {
      source: [
        ['product', '2012', '2013', '2014', '2015', '2016', '2017'],
        ['Milk Tea', 56.5, 82.1, 88.7, 70.1, 53.4, 85.1],
        ['Matcha Latte', 51.1, 51.4, 55.1, 53.3, 73.8, 68.7],
        ['Cheese Cocoa', 40.1, 62.2, 69.5, 36.4, 45.2, 32.5],
        ['Walnut Brownie', 25.2, 37.1, 41.2, 18, 33.9, 49.1]
      ]
    },
    xAxis: { type: 'category' },
    yAxis: { gridIndex: 0 },
    grid: { top: '55%' },
    series: [
      {
        type: 'line',
        smooth: true,
        seriesLayoutBy: 'row',
        emphasis: { focus: 'series' }
      },
      {
        type: 'line',
        smooth: true,
        seriesLayoutBy: 'row',
        emphasis: { focus: 'series' }
      },
      {
        type: 'line',
        smooth: true,
        seriesLayoutBy: 'row',
        emphasis: { focus: 'series' }
      },
      {
        type: 'line',
        smooth: true,
        seriesLayoutBy: 'row',
        emphasis: { focus: 'series' }
      },
      {
        type: 'pie',
        id: 'pie',
        radius: '30%',
        center: ['50%', '25%'],
        emphasis: {
          focus: 'self'
        },
        label: {
          formatter: '{b}: {@2012} ({d}%)'
        },
        encode: {
          itemName: 'product',
          value: '2012',
          tooltip: '2012'
        }
      }
    ]
  };
  myChart.on('updateAxisPointer', function (event) {
    const xAxisInfo = event.axesInfo[0];
    if (xAxisInfo) {
      const dimension = xAxisInfo.value + 1;
      myChart.setOption({
        series: {
          id: 'pie',
          label: {
            formatter: '{b}: {@[' + dimension + ']} ({d}%)'
          },
          encode: {
            value: dimension,
            tooltip: dimension
          }
        }
      });
    }
  });
  myChart.setOption(option);
});

2 加载HTML

//.h
#include <QJsonArray>
#include <QJsonObject>
#include <QJsonDocument>
#include <QWebChannel>

#include <QTimer>
#include <QtWebEngineWidgets/QWebEngineView>


//.cpp
/* 表图控件*/
_htmlDir = "D:/Qt/ECharts/ECharts_linkage/";
_indexFileName = "echarts.html";
ui->widget->setContextMenuPolicy(Qt::NoContextMenu);
ui->widget->load(QUrl(_htmlDir + _indexFileName));

3 调用表图

void MainWindow::initialize_QDataAll()
{
    for (int var = 0; var < 24; var++)
    {
        numList_data1 << var+1;
        numList_data2 << var+10;
        numList_data3 << var+20;
        numList_data4 << var+30;
        numList_data5 << var+40;
        numList_data6 << var+50;
        numList_data7 << var+60;
        numList_data8 << var+70;
        numList_data9 << var+80;
    }

    QString cmd = QString("QDataAll(" +
                          QString(QJsonDocument(numList_data1).toJson()) + "," +
                          QString(QJsonDocument(numList_data2).toJson()) + "," +
                          QString(QJsonDocument(numList_data3).toJson()) + "," +
                          QString(QJsonDocument(numList_data4).toJson()) + "," +
                          QString(QJsonDocument(numList_data5).toJson()) + "," +
                          QString(QJsonDocument(numList_data6).toJson()) + "," +
                          QString(QJsonDocument(numList_data7).toJson()) + "," +
                          QString(QJsonDocument(numList_data8).toJson()) + "," +
                          QString(QJsonDocument(numList_data9).toJson()) +
                          + ")");

    ui->widget->page()->runJavaScript(cmd);

}

4 pro文件

QT += webenginewidgets

5 ui文件

        提升为:QWebEngineView

 6 说明

        QT通过调用JS需要用到定时器延时启动,因为HTML 中的JS函数 在初始化过程中处在最后,如果直接调用会直接报错找不到JS函数,所以需要延时调用JS函数。

    void initialize_QDataAll();
    //定时器延时启动初始化相机操作
    Initializetimer = new QTimer(this);
    connect(Initializetimer, SIGNAL(timeout()), this, SLOT(initialize_QDataAll()));
    Initializetimer->start(5 * 1000);

7 其它文章

QT Echarts 使用详解(一)ECharts下载\示例\动态缩放_双子座断点的博客-CSDN博客_echarts示例下载

QT Echarts 使用详解(二)ECharts柱状图\交互_双子座断点的博客-CSDN博客_qt使用echarts

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/151984.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

kettle 筛选数据 并根据关键字段去重 设计

文章目录前言kettle 筛选数据 并根据关键字段去重 设计实现:1、配置sqlite 数据库链接2、先从test表里抽取数据3、将表输入查询的数据插入到excel里4、将筛选出来的数据根据id去重5、插入本地excel6、ETL 整体效果:7、测试:前言 如果您觉得有用的话&#xff0c;记得给博主点个赞…

安全轻量化股票看盘盯盘软件需要实现的功能和基本要求是什么?

有很多投资者是上班族的&#xff0c;因此是不能无时无刻盯盘看盘的&#xff0c;那么为了解决这个问题就需要用上轻量化股票看盘盯盘软件&#xff0c;那么一个安全的轻量化股票看盘盯盘软件需要具备哪些功能和基本要求呢&#xff1f;接下来小编为大家分析分析&#xff01; 1.一定…

小试跨平台局域网文件传输工具NitroShare,几点感想

随着电脑系统国产化的推进&#xff0c;单位用的OA系统已转移到国产电脑上了&#xff0c;但是国产电脑上的操作系统基于Linux&#xff0c;软件商店里可选的应用软件还不够多&#xff0c;功能也还有待提高。为了提高处理效率&#xff0c;经常需要把文件从国产电脑传到Windows平台…

信息收集过程WAF绕过详解

今天继续给大家介绍渗透测试相关知识&#xff0c;本文主要内容是信息收集过程WAF绕过详解。 免责声明&#xff1a; 本文所介绍的内容仅做学习交流使用&#xff0c;严禁利用文中技术进行非法行为&#xff0c;否则造成一切严重后果自负&#xff01; 再次强调&#xff1a;严禁对未…

浅析数据中心机架配电母线的应用及监控

摘要&#xff1a;本文先分析配电母线槽创新点和优势&#xff0c;然后结合湛江数据中心302机房母线槽建设对配电母线槽和列头柜两种供电方式进行经济效益对比&#xff0c;最后总结推广应用建议&#xff0c;以期为相关工程技术人员提供参考。 关键词&#xff1a;机架配电母线&a…

【动态路由和导航守卫】一.动态路由;二.路由中的查询参数;三.命名路由;四.命名视图;五.声明式导航 编程式导航;六.导航守卫

目录 一.动态路由 1.什么是动态路由&#xff1f; 2.动态路由如何进行参数的传递&#xff1a; &#xff08;1&#xff09;如何设置URL地址中的参数&#xff1a;/url/:参数名 &#xff08;2&#xff09;在组件中接收参数&#xff1a;this.$route.params.参数名 3.$route和$r…

最新版android-studio无法安装Lombok插件?魔改后可任意安装版本教程(附已魔改下载地址)

&#x1f935;‍♂️ 个人主页: 奇怪的守护神 &#x1f468;‍&#x1f4bb; 作者简介&#xff1a;十年全栈开发经验&#xff0c;团队负责人。喜欢钻研技术&#xff0c;争取成为编程达人 &#x1f396;️&#xff01; &#x1f5fa;️学海无涯苦作舟&#xff0c;&#x1f6e4;️…

【自学Python】Python字符串(string)

Python字符串(string) Python字符串(string)教程 字符串是一个不可改变的字节序列。字符串可以包含任意的数据&#xff0c;但是通常是用来包含可读的文本。 Python字符串(string) Python 字符串定义有五种形式&#xff0c;使用单引号、双引号、三个单引号 、三个双引号以及…

胡凡 《算法笔记》 上机实战训练指南 chap3 入门模拟: 3.2 查找元素

胡凡 《算法笔记》 上机实战训练指南 chap3 入门模拟: 3.2 查找元素 文章目录胡凡 《算法笔记》 上机实战训练指南 chap3 入门模拟: 3.2 查找元素【PAT B1041】考试座位号【PAT B1004】成绩排名【PAT B1028】人口普查解决过程(cpp)AC代码python实现AC代码pycode1pycode2未AC代码…

代码随想录算法训练营第7天 383.赎金信、454. 四数相加II、15.三数之和、18.四数之和

代码随想录算法训练营第7天 383.赎金信、454. 四数相加II、15.三数之和、18.四数之和 赎金信 力扣题目链接(opens new window) 给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串&#xff0c;判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构…

ERP系统到底能做什么?

ERP是什么&#xff1f;ERP即企业资源计划&#xff0c;ERP系统主要是优化企业内部的业务流程&#xff0c;用信息化管控的方式进行采购管理、库存管理、销售管理和财务管理等板块。它可以看作是进销存系统的进阶版&#xff0c;主要针对供应链中下游。 一、ERP系统怎么产生的&…

SpringBoot(项目创建使用+配置文件+日志文件)

目录 1. Spring Boot 项目创建 2. 写一个 Hello World 并运行 3. 配置文件的作用及格式 4. properties 配置文件的基本语法 5. 读取配置文件 6. yml 配置文件说明 7. properties 和 yml 的区别 8. SpringBoot 日志文件 8.1 日志的作用 8.2 自定义日志打印 8.3 日志…

低代码:全力构筑企业数字转型新生态

数字转型企业处于数字经济大潮的风口浪尖&#xff0c;既是创新主体也是数字技术广泛运用的重要平台&#xff0c;主动调整企业发展战略以顺应数字化转型是其明智抉择。企业经营决策者应深刻认识数字化转型的发展特点及本质要求&#xff0c;看到数字化转型是企业战略的迭代升级&a…

C#,图像二值化(19)——全局阈值的香巴拉算法( Shanbhag Thresholding)及源程序

1 算法描述&#xff08;凑数&#xff09;thresholdShanbhag由Robert Haase基于G.Landini和W.Rasband的工作。自动阈值器利用ImageJ中实现的Shanbhag阈值方法&#xff0c;使用GPU上确定的直方图创建尽可能类似于ImageJ“应用阈值”方法的二进制图像。thresholdShanbhag By Rober…

「精致店主理人」:青年敢有所为,梦想掷地有声

第三期「精致店主理人」青年创业孵化营于12月16日在周大福顺德匠心智造中心&#xff0c;完美收官&#xff01;「精致店主理人」青年创业孵化营是在共青团深圳市委员会的指导下&#xff0c;由深圳市青少年发展基金会与周大福珠宝集团联合主办&#xff0c;郑家纯青年发展专项基金…

CPU基本结构和运行原理

1 CPU的基本结构 1.1 CPU是一个计算系统的核心 Control Unit&#xff0c;负责控制。如指令计数器&#xff0c;指令跳转。 Logic Unit&#xff0c;负责计算。如加减&#xff0c;比较大小等。 1.2 南北桥芯片将CPU与外设连接 北桥&#xff1a;CPU和内存、显卡等部件进行数据交…

Python解题 - CSDN周赛第22期 - 取数字

又是大放水的一期&#xff0c;连我都可以10分钟解决战斗了。得益于Python&#xff0c;前面三题5分钟内就pass了&#xff0c;而最后一题也是之前刷过类似的。。。于是相应地&#xff0c;这期的题解也会简短一些。 这次的好成绩代表不了实力&#xff0c;但也希望这样的好运气能一…

自然语言处理 概览理解 NLP specialization - Supervised ML

自然语言处理 概览理解 NLP specialization - Supervised ML Remember that understanding the data is one of the most critical steps in Data Science 自然语言处理可以实现语义识别&#xff0c;情感识别&#xff0c;文本翻译等等功能&#xff0c;当然最近情况下最火的便…

Java支付宝沙箱环境支付,官方Demo远程调试【内网穿透】

文章目录1. 下载当面付demo2. 修改配置文件3. 打包成web服务4. 局域网测试5. 内网穿透6. 测试公网访问7. 配置二级子域名8. 测试使用固定二级子域名访问在沙箱环境调试支付SDK的时候&#xff0c;往往沙箱环境部署在本地&#xff0c;局限性大&#xff0c;在沙箱环境中有多种支付…

MATLAB-一维插值运算

一维插值是指对一维函数进行插值。已知n1个结点(x,y,)&#xff0c;其中x,互不相同(j0&#xff0c;1&#xff0c;2&#xff0c;... n),求任意插值点x*处的插值y*。求解一维插值问题的主要思想是:设结点由未知的函数g(x)产生&#xff0c;函数g(x)为连续函数且g(x)y;(j0,1,...,n);…