《QT实用小工具·十一》Echart图表JS交互之仪表盘

1、概述
源码放在文章末尾

该项目为Echart图表JS交互之炫酷的仪表盘,可以用鼠标实时改变仪表盘的读数。

下面为demo演示:

该项目部分代码如下:

cpp 复制代码
#include "widget.h"
#include "ui_widget.h"
#include "qurl.h"

#ifdef webkit
#include <QtWebKit>
#if (QT_VERSION >= QT_VERSION_CHECK(5,0,0))
#include <QtWebKitWidgets>
#endif
#elif webengine
#include <QtWebEngineWidgets>
#endif

Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget)
{
    ui->setupUi(this);
    this->initForm();
}

Widget::~Widget()
{
    delete ui;
}

void Widget::initForm()
{
    //初始化浏览器控件属性,一个项目中只需要设置一次就行
#ifdef webkit
    QWebSettings *webSetting = QWebSettings::globalSettings();
    webSetting->setAttribute(QWebSettings::JavascriptEnabled, true);
    webSetting->setAttribute(QWebSettings::PluginsEnabled, true);
    webSetting->setAttribute(QWebSettings::JavascriptCanOpenWindows, true);
#elif webengine
    QWebEngineSettings *webSetting = QWebEngineProfile::defaultProfile()->settings();
    webSetting->setAttribute(QWebEngineSettings::JavascriptEnabled, true);
    webSetting->setAttribute(QWebEngineSettings::PluginsEnabled, true);
    webSetting->setAttribute(QWebEngineSettings::JavascriptCanOpenWindows, true);
#endif

    //实例化多个浏览器控件,设置背景透明
#ifdef webkit
    for (int i = 0; i < 4; ++i) {
        QWebView *webView = new QWebView;
        webView->setStyleSheet(QString("background:%1;").arg("rgba(255,0,0,0)"));
        webViews << webView;
    }
#elif webengine
    for (int i = 0; i < 4; ++i) {
        QWebEngineView *webView = new QWebEngineView;
        webView->page()->setBackgroundColor(Qt::transparent);
        webViews << webView;
    }
#endif

    //添加到布局
#if (defined webkit) || (defined webengine)
    ui->gridLayout->addWidget(webViews.at(0), 0, 0);
    ui->gridLayout->addWidget(webViews.at(1), 0, 1);
    ui->gridLayout->addWidget(webViews.at(2), 1, 0);
    ui->gridLayout->addWidget(webViews.at(3), 1, 1);
#endif

    //加载html文件
    QUrl url("file:///" + qApp->applicationDirPath() + "/gauge.html");
#ifdef webkit
    foreach (QWebView *webView, webViews) {
        webView->load(url);
    }
#elif webengine
    foreach (QWebEngineView *webView, webViews) {
        webView->load(url);
    }
#endif
}

void Widget::on_horizontalSlider_valueChanged(int value)
{
    //执行js函数
    QString js = QString("setGaugeValue(%1)").arg(value);
#ifdef webkit
    foreach (QWebView *webView, webViews) {
        webView->page()->mainFrame()->evaluateJavaScript(js);
    }
#elif webengine
    foreach (QWebEngineView *webView, webViews) {
        webView->page()->runJavaScript(js);
    }
#endif
}

源码下载

相关推荐
NiceCloud喜云6 小时前
Opus 4.8 的 Effort Control 怎么选:Low 到 Max 五档策略
android·java·大数据·前端·c++·python·spring
cjhbachelor6 小时前
c++继承
c++
AI玫瑰助手6 小时前
Python函数:默认参数的定义与注意事项
开发语言·python·信息可视化
油炸自行车6 小时前
Claude Code 错误:API Error: 400 Failed to deserialize the JSON body into the
开发语言·javascript·json·trae·claude code·api error 400
肩上风骋7 小时前
C++14特性
开发语言·c++·c++14特性
读书札记20227 小时前
Qt界面卡死问题探讨及解决方法
qt
JAVA社区8 小时前
Java高级全套教程(十)—— SpringCloudAlibaba超详细实战详解
java·开发语言·spring cloud·面试·职场和发展
弥树子8 小时前
踩坑记录:服务器内网调用接口,真实请求URL与官方公开URL不一致问题排查
开发语言·php
z落落8 小时前
C# ToCharArray + foreach遍历 + String与StringBuilder
开发语言·c#
学代码的真由酱9 小时前
Java多用户一对一网页聊天室-测试报告
java·开发语言·功能测试·测试