QML WebEngineView简单用法和常用接口
前言
WebEngineView用于在 QML 界面中加載一個網頁,該組件和QWebEngineView類對應,接口都是一樣的,只是一個在 QML 中使用,一個是在 C++中使用,這里只根據在平常的使用中總結的簡單的WebEngineView用法。
正文
簡單用法
WebEngineView的使用非常簡單,這里摘一段 Qt 幫助文檔中的示例:
import QtQuick 2.0import QtQuick.Window 2.0import QtWebEngine 1.0Window {width: 1024height: 750visible: trueWebEngineView {id:webviewanchors.fill: parenturl: "http://www.www.baidu.com"}}如上示例,只需要指定 url,即可自動加載網,但是如果僅僅就寫成這樣,會出現一個問題,就是只能加載當前這個網頁,如果在網頁里面還想再次點擊其他鏈接,這樣是不會相應的,那么該怎么實現這個功能呢,加上以下這句:
onNewViewRequested: request.openIn(webview)這里的newViewRequested是一個信號,來看一下 Qt 幫助文檔中對這個信號的介紹:
This signal is emitted when a page load is requested to happen in a separate web engine view. This can either be because the current page requested it explicitly through a JavaScript call to window.open, or because the user clicked on a link while holding Shift, Ctrl, or a built-in combination that triggers the page to open in a new window.
幫助文檔寫的很清楚,這里就不過多介紹了,實現方式就是綁定過該信號,然后加上一句:request.openIn(webview)
網頁中的視頻不能加載
通過以上方式加載網頁后,如果網頁中包含視頻或音頻之類的元素,是不能正常播放的,這是因為沒有默認運行插件,如 flash player,設置方法如下:
webview.settings.pluginsEnabled:true官網介紹如下:
*Enables support for Pepper plugins, such as the Flash player.
Disabled by default.*
除了以上設置,WebEngineSettings中還有很多其他屬性可以設置,具體查看幫助文檔。
緩存路徑,清除緩存
加載網頁會有緩存產生,那么緩存的路徑如下:
webview.profile.cachePath清理緩存
webview.profile.clearHttpCache()注意,清理緩存的接口在QtWebEngine 1.3中才有。
還有一個接口有必要說一下,重新加載網頁內容可以用 reload()函數,有一個和它類似的接口叫
官網的介紹如下:
*Reloads the current page, ignoring any cached content.
This QML method was introduced in QtWebEngine 1.1.*
這個接口的作用就是跳過緩存然后重新加載網頁,如果網頁有改動,又不想去清除緩存,那么可以通過該接口來重新加載網頁。
OK,以上是最近在項目中遇到的關于 QML 加載網頁相關的問題,做個簡單的記錄。
總結
以上是生活随笔為你收集整理的QML WebEngineView简单用法和常用接口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt 通过鼠标移动窗口
- 下一篇: Qt UDP 广播简单示例