QWebEngineView与html通信

一、Qt给Html发信号调用Html的函数

1.在与html同文件下加入qwebchannel.js文件

2.connectHtml类继承于QWebEngineView

3.声明全局变量QWebChannel    *m_webChannel;

4.connectHtml类构造函数中:

QNetworkProxyFactory::setUseSystemConfiguration(false);//必须,防止加载为空白
this->settings()->setAttribute(QWebEngineSettings::WebAttribute::LocalContentCanAccessRemoteUrls, true);//必须,防止加载为空白
this->setParent(parent);//必须
this->resize(1440, 750);
m_webChannel = new QWebChannel(this->page());
m_webChannel->registerObject(QString("qtChannel"), this);
this->page()->setWebChannel(m_webChannel);
this->page()->load(QUrl("file:///" + htmlPath));
QObject::connect(this->page(), &QWebEnginePage::loadFinished, this, [=]() {
//TO DO};

5.connectHtml.h声明几个信号和槽函数

signals:

    void setPieImage(QString msg1,QString msg2);

    void setBarImage(QString msg1,QString msg2,QString msg3,QString msg4);

    void setScatterImage(QString msg1,QString msg2);

public slots:

    void loadfinish();【HTML调用QT函数】

6.html文件:

在<head>...</head>内添加

    <script type="text/javascript" src="qwebchannel.js"></script> <!-- 与qt交互 -->

在<body>...</body>内添加

        window.onload = function () {

            if (typeof qt != 'undefined') {

                new QWebChannel(qt.webChannelTransport, function (channel) {

                    channel.objects.qtChannel.setPieImage.connect(setPieImage);

                    channel.objects.qtChannel.setBarImage.connect(setBarImage);

                    channel.objects.qtChannel.setScatterImage.connect(setScatterImage);

                    channel.objects.qtChannel.loadfinish();//加载成功后调用QT中loadfinish()槽函数

                    //alert("qt对象获取ok!");

                })

            }

            else {

                alert("qt对象获取失败!");

            }

        }

        function setPieImage(msg1, msg2) {

            var img1 = document.getElementById("pieChart1")

            img1.src = msg1;

            var img2 = document.getElementById("pieChart2")

            img2.src = msg2;

        }

        function setBarImage(msg1, msg2, msg3, msg4) {

            var img3 = document.getElementById("barChart1")

            img3.src = msg1;

            var img4 = document.getElementById("barChart2")

            img4.src = msg2;

            var img5 = document.getElementById("barChart3")

            img5.src = msg3;

            var img6 = document.getElementById("barChart4")

            img6.src = msg4;

        }

        function setScatterImage(msg1, msg2) {

            var img7 = document.getElementById("ScatterChart1")

            img7.src = msg1;

            var img8 = document.getElementById("ScatterChart2")

            img8.src = msg2;

        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值