QT中使用QTWebEngine加載本地HTML并與JS交互回調(diào)喚起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方法為喚起終端執(zhí)行命令

3、在工程內(nèi)創(chuàng)建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代理發(fā)布的。
registerObject("bridge", bridge);我的理解為將"bridge"這個通道的代理交給bridge這個實例對象來處理,同時在html里也會通過"bridge"喚起jscallme這個方法的

4、html創(chuàng)建通道

首先是引用一個js文件,這個文件在qt的安裝位置內(nèi)可以找到
<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)
                 }
               }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • feisky云計算、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 4,354評論 0 5
  • 我相信大部分人都希望社會上發(fā)生的都是些美好的事物,出現(xiàn)的都是些善的行為,然而現(xiàn)實中,事實上,卻有種種“丑、惡”事件...
    老李的理性批判閱讀 1,386評論 0 1
  • 外婆是2010年12月25日清晨離開這個涼薄的人世間。說涼薄是因走時幾個兒女都沒在床前送終,悄無聲息的離開了我們。...
    木木塵閱讀 312評論 0 3
  • 王睿玲相親的次數(shù)也不少了,這一次是她比較滿意的一次。在父母包辦婚姻的年代,如果只是男女雙方自己看上的對象,最終多半...
    蝸牛黃閱讀 177評論 0 0
  • 風(fēng)吹進(jìn)樹葉的沙沙聲,溪水流淌山澗的潺潺聲,天空雷鳴響起的轟隆聲,雨后新筍的破土聲,雪花壓斷枝丫的咯吱聲,魚兒磚出水...
    右月閱讀 355評論 0 3

友情鏈接更多精彩內(nèi)容