zoukankan      html  css  js  c++  java
  • 解决windows用cef浏览器、mac用QWebEngineView浏览器js调用客户端的问题

    js端:

    <html>
    <head>
    <title>测试与js交互</title>
    <script src="qwebchannel.js"></script>   //QWebEngineView需要引用该资源
    <script language="JavaScript">
    
      window.onload = function() {
        
        new QWebChannel(qt.webChannelTransport, function(channel) {
            // 获取Qt类交互对象
            var interactObject = channel.objects.interactObject;
            // 链接Qt类信号函数
            window.foo = interactObject;
        });
      }
      //判断系统类型
      function isMac() {
          return /macintosh|mac os x/i.test(navigator.userAgent);
      }
      function setCutScreen() {
        if(isMac()) {
          foo.CutScreen();   //调用QWebEngineView浏览器
        }
        else {
          window.CutScreen();   //调用cef浏览器
        }
      }
      function setNoCutScreen() {
        if(isMac()) {
          foo.NoCutScreen();
        }
        else {
          window.NoCutScreen();
        }
      }
      function close() {
        if(isMac()) {
          foo.CloseClient();
        }
        else {
          window.CloseClient();
        }
      }
    </script>
    </head>
    <body>
    <form>
        <input type="button" onclick="setCutScreen();" value="不霸屏"> 
        <input type="button" onclick="setNoCutScreen();" value="霸屏"> 
        <input type="button" onclick="CloseClient();" value="关闭"> 
    </form>
    </body>
    </html>

    客户端:

    //C++对象
    class InteractObject : public QObject
    {
        Q_OBJECT
    
        public slots:
            void CutScreen()
            {
                QMessageBox::information(nullptr,"","CutScreen()");
            }
    };
    
    InteractObject *interactObject  = new InteractObject();
    
    QWebChannel *channel = new QWebChannel(this);  //QWebChannel 对象
    
    channel->registerObject("interactObject", interactObject);     //将interactObject注册到QWebChannel对象中
     
    view->page()->setWebChannel(channel);          //WebEngineView下的page设置channel

     参考:(6条消息) QWebEngine 之 C++与Js通信_wjjontheway的专栏-CSDN博客

  • 相关阅读:
    4270. 【NOIP2015模拟10.27】魔道研究
    4269. 【NOIP2015模拟10.27】挑竹签
    NOIP2015模拟10.28B组
    JZOI5257. 小X的佛光
    4260. 最大子矩阵 (Standard IO)
    1010. 【CQOI2009】叶子的颜色
    【NOIP2015模拟10.22】最小代价
    JZOI 距离 (Standard IO) 题解
    统计和 luogu P2068 树状数组和线段树练手
    2020.7.15模拟赛
  • 原文地址:https://www.cnblogs.com/tingtaishou/p/15774139.html
Copyright © 2011-2022 走看看