qt調用javascript

來源:互聯網
上載者:User

  Qt有一個叫QWebView的類,它是基於WebKit引擎的瀏覽器。除此之類Qt還有可以顯示HTML代碼的組件如QTextEdit等,為我們提示了豐富、實用、簡便和意想不到的功能。Qt的擴充性非常好,它可以允許你的C++代碼與網頁裡的Javascript進行互動。這裡分享一下自己使用C++執行網頁的Javascript函數的一點經驗。

    調用Javascript代碼是通過QWebFrame類的evaluateJavaScript函數來實現的。下面是一個例子,我寫了一個本地的HTML檔案如下:

<html>
<head>
<script type="text/javascript" src="test.js">
</script>
</head>

<body>
<form>
<input type="button" value="Click me!" onclick="Test()" >
</form>
</body>
</html>

這個簡單的網頁有一個按鈕,點擊後調用Test函數,而Test函數是在一個test.js的Javascript檔案,檔案內容如下:

function Test() {
alert("Test");
}

function add() {

return 33;

}

建立一個工程,加入一個QWebView,初始化載入Test.html,

ui.webView->load(QUrl("test.html"));

再加入一個按鈕,為了調用Javascript,然後在按鈕點擊時就可以用C++代碼:

ui.webView->page()->mainFrame()->evaluateJavaScript("Test()");

運行後可以看到網頁彈出了一個提示框。這和在網頁裡面點擊按鈕的效果是一樣的。

 

附註:

如果是qt調用js函數,js函數帶參數時,要多注意, 在qt裡該函數調用方法要寫成:

QString method = QString("jsFunction(\"%1\", \"%2\")").arg(param1).arg(param2);

m_web_view->page()->mainFrame()->evaluateJavaScript(method);

參數兩邊的引號必不可少,而且要轉義符轉義。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.