QT中使用QTWebEngine加载本地HTML并与JS交互回调唤起CMD命令

1、.pro工程文件中添加引用

QT += webenginewidgets
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

2、定义一个bridge类

#include <QObject>
#include<QMessageBox>
class bridge : public QObject
{

    void jscallme(const QString &text)
    {
        if(text ==QString::fromLocal8Bit("2"))
        {
           //QMessageBox::information(NULL, "jscallme", text);
           system("gnome-terminal -x bash -c 'cd /home/rtour/workspace/qt-screen/rtour/sh;./setup_bei.sh'&");
        }else {
            system("gnome-terminal -x bash -c 'cd /home/rtour/workspace/qt-screen/rtour/sh;./setup_hong_test.sh'&");
        }
    }

};

此处jscallme为HTML中将会唤起的方法
system方法为唤起终端执行命令

3、在工程内创建webengine

ui->setupUi(this);
webView = new QWebEngineView(this);
webView->load(QUrl("http://localhost:3000/"));
setCentralWidget(webView);
webChannel = new QWebChannel(webView->page());
bridge *bridge = new bridge();
webChannel->registerObject("bridge", bridge);
webView->page()->setWebChannel(webChannel);

这里http://localhost:3000/是HTML文件的地址,我是通过nginx代理发布的。
registerObject("bridge", bridge);我的理解为将"bridge"这个通道的代理交给bridge这个实例对象来处理,同时在html里也会通过"bridge"唤起jscallme这个方法的

4、html创建通道

首先是引用一个js文件,这个文件在qt的安装位置内可以找到
<script src="qwebchannel.js"></script>

//获取bridge对象
new QWebChannel(qt.webChannelTransport, function(channel) {
                 window.bridge = channel.objects.bridge;
                 
               })
//通过bridge唤起jscallme               
function onShowMsgBox() {
                 if (window.bridge) {
                   window.bridge.jscallme(line)
                 }
               }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,925评论 0 5
  • 我相信大部分人都希望社会上发生的都是些美好的事物,出现的都是些善的行为,然而现实中,事实上,却有种种“丑、恶”事件...
    老李的理性批判阅读 1,308评论 0 1
  • 外婆是2010年12月25日清晨离开这个凉薄的人世间。说凉薄是因走时几个儿女都没在床前送终,悄无声息的离开了我们。...
    木木尘阅读 266评论 0 3
  • 王睿玲相亲的次数也不少了,这一次是她比较满意的一次。在父母包办婚姻的年代,如果只是男女双方自己看上的对象,最终多半...
    蜗牛黄阅读 138评论 0 0
  • 风吹进树叶的沙沙声,溪水流淌山涧的潺潺声,天空雷鸣响起的轰隆声,雨后新笋的破土声,雪花压断枝丫的咯吱声,鱼儿砖出水...
    右月阅读 319评论 0 3