【QT】Qt5 QtWebEngine使用教程

目錄

      • 1、QtWebEngine相比于QtWebKit的優勢
      • 2、項目配置
        • 2.1 確認 Qt 版本
        • 2.2 在.pro 文件中添加依賴
      • 3、顯示網頁
      • 4、實現Qt和網頁JavaScript之間的交互
        • 4.1 Qt執行網頁的JavaScript代碼
        • 4.2 JavaScript調用Qt對象的函數


??QtWebEngine 是 Qt 框架中用于在應用程序中嵌入 Web 內容的模塊,它基于 Chromium 開源項目。從 Qt 5.6 開始,QtWebKit 被棄用,改用 QtWebEngine。

1、QtWebEngine相比于QtWebKit的優勢

  • 現代渲染引擎:
    • QtWebEngine:基于 Chromium 開源項目,采用 Blink 渲染引擎。Blink 是一個現代且高性能的渲染引擎,廣泛應用于 Chrome 等主流瀏覽器中。它在渲染速度、頁面布局準確性以及對最新 Web 標準(如 HTML5、CSS3 和 JavaScript 新特性)的支持上表現出色。這使得使用 QtWebEngine 的應用程序能夠快速、準確地呈現復雜的網頁內容,為用戶提供流暢的瀏覽體驗。
    • QtWebKit:使用的 WebKit 渲染引擎在發展過程中逐漸落后于 Blink。隨著 Web 技術的快速發展,WebKit 在處理一些新的 Web 標準和復雜頁面時,性能和兼容性方面的問題逐漸顯現。
  • 多進程架構:
    • QtWebEngine:得益于 Chromium 的多進程架構設計。這種架構將網頁的不同部分(如渲染進程、插件進程等)分離到不同的進程中運行。這樣一來,如果某個網頁內容(如一個有問題的 JavaScript 腳本或插件)出現崩潰,不會影響整個應用程序的穩定性,只會終止相關的進程,而應用程序的其他部分仍可正常運行。同時,多進程架構還能更好地利用多核 CPU 的性能,提升整體渲染和處理效率。
    • QtWebKit:通常采用單進程架構,一旦網頁內容出現錯誤,很可能導致整個應用程序崩潰,穩定性較差。而且單進程架構在資源利用和性能提升方面存在一定局限。
  • 安全沙箱機制:
    • QtWebEngine:繼承了 Chromium 的安全沙箱機制。沙箱對網頁內容的運行環境進行嚴格限制,阻止網頁代碼對本地系統資源進行非法訪問,如訪問敏感文件、執行惡意腳本等。這種機制大大增強了應用程序的安全性,降低了因網頁內容導致的安全威脅。
    • QtWebKit:雖然也有一定的安全措施,但相比之下,其沙箱機制不夠完善,在防止網頁內容對本地系統的潛在攻擊方面,不如 QtWebEngine 有效。

2、項目配置

2.1 確認 Qt 版本

??QtWebEngine 從 Qt 5.6 開始成為 Qt 的一部分。確保你使用的 Qt 版本支持該模塊。并確認在安裝 Qt 時安裝了 QtWebEngine 模塊,可以通過 Qt 的 MaintenanceTool.exe 工具查看是否安裝。

2.2 在.pro 文件中添加依賴

??在你的 Qt 項目的 .pro 文件中添加 QT += webenginewidgets webchannel。

3、顯示網頁

??QtWebEngine 模塊的 QWebEngineView 相當于 QtWebKit 模塊的 QWebView,在函數接口上類似。

  • 使用 QWebEngineView 的 load 函數加載網頁或html文件。如下所示:

    #include <QApplication>
    #include <QWebEngineView>int main(int argc, char *argv[])
    {QApplication a(argc, argv);QWebEngineView view;view.load(QUrl("http://www.example.com"));view.show();return a.exec();
    }
    
  • 使用 QWebEngineView 的 setHtml 函數可以直接加載顯示 html 文本,一般用于簡單顯示 html 超文件。示例如下:

    #include <QApplication>
    #include <QWebEngineView>int main(int argc, char *argv[])
    {QApplication a(argc, argv);QWebEngineView view;QString html = "<html><body><h1>Hello, QtWebEngine!</h1></body></html>";view.setHtml(</

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/74850.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/74850.shtml
英文地址,請注明出處:http://en.pswp.cn/web/74850.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

網絡安全-等級保護(等保) 1-0 等級保護制度公安部前期發文總結

################################################################################ 等級保護從1994年開始已經有相關文件下發&#xff0c;進行建設&#xff0c;后續今年多年制度完善&#xff0c;現在已進入等保2.0時代&#xff0c;相關政策已運行多年。 前期等保相關發文&…

視圖函數的應用

1.實現將當前日期和時間編碼為HTML文檔并返回的簡單視圖函數 文章目錄 1.實現將當前日期和時間編碼為HTML文檔并返回的簡單視圖函數1.1打開visualcode 按圖示點擊 創建新的終端1.2然后定義ViewDjango項目根目錄下的路由文件urls.py&#xff0c;實現到SimpleView應用的路由路徑1…

解鎖 C 語言安全新姿勢:C11 安全函數全解析

一、開篇:C 語言安全的新護盾 在 C 語言的編程世界里,緩沖區溢出等安全問題猶如潛藏的暗礁,時刻威脅著程序的穩定與安全。為了有效應對這些挑戰,C11 標準引入了一系列安全函數,也被稱為 “Annex K” 標準庫函數。這些函數為字符串和內存操作函數注入了新的活力,通過增加…

BGP路由協議之屬性2

Orgin 起源 公認必遵屬性 起源名稱標記描述IGPi如果路由是由始發的 BGP 路由器使用 network 命令注入到 BGP 的&#xff0c;那么該 BGP 路由的 origin 屬性為 IGPEGPe如果路由是通過 EGP 學習到的&#xff0c;那么該 BGP 路由的 Origin 屬性為 EGPIncomplete?如果路由是通過…

C#實現HiveQL建表語句中特殊數據類型的包裹

用C#實現搜索字符串中用’(‘和’)‘包裹的最外層的里面里面的字符串&#xff0c;將里面的記錄按一個或多個空格、換行或tab&#xff0c;或者是它的在一起的組合作為分隔&#xff0c;分隔出多個字符串組&#xff0c;如果組中有字符串中同時包含’<‘和’>’&#xff0c;則…

腦電學習筆記

一&#xff0c;原理簡介 使用eprime或者matlab給被試呈現刺激&#xff0c;并在某個時間發送Mark&#xff0c;腦電帽會同步采集被試的腦電信號&#xff0c;經放大器放大后&#xff0c;控制盒會把腦電信號和mark 信號同步到一起&#xff0c;通過usb線傳入到采集系統&#xff08;比…

宏碁筆記本電腦擎7PRO搭載的 NVIDIA RTX 5080 顯卡安裝pytorch

宏碁筆記本電腦擎7PRO搭載的 NVIDIA RTX 5080 顯卡是一款高性能移動 GPU&#xff0c;基于 NVIDIA 最新的 Blackwell 架構設計&#xff0c;通過修正架構&#xff08;Blackwell&#xff09;、顯存類型與帶寬&#xff08;GDDR7、960GB/s&#xff09;、Tensor Core 與 RT Core 全面…

ES6中增強對象

在 ES6 中&#xff0c;對象的使用變得更加方便了&#xff0c;可以在定義對象時通過屬性簡寫、遍歷作為屬性名或省略對象函數屬性的書寫等方式來提高編碼的效率&#xff1a; 其實就這么簡單&#xff0c;大家可以好好看下上面的代碼&#xff0c;有問題歡迎留言一起探討&#xff0…

XSLFO XSLT:深入解析兩種強大的XML轉換技術

XSLFO & XSLT:深入解析兩種強大的XML轉換技術 引言 在XML(可擴展標記語言)的生態系統中,XSLFO(可擴展樣式表語言格式化對象)和XSLT(可擴展樣式表轉換語言)是兩種非常強大的技術。它們分別負責將XML文檔轉換為其他格式以及進行XML文檔的轉換。本文將深入探討這兩種…

Django4.0的快速查詢以及分頁

1. filter 方法 filter 是 Django ORM 中最常用的查詢方法之一。它用來根據給定的條件過濾查詢集并返回滿足條件的對象。 articles Article.objects.all() # 使用 SearchFilter 進行搜索 search_param request.query_params.get(search, None) author_id request.query_pa…

在Vue3中格式化后端返回的Java Date類型數據為指定格式

在前端Vue3項目中&#xff0c;格式化后端返回的java.util.Date類型時間到yyyy-MM-dd HH:mm:ss格式&#xff0c;有幾種常用方法&#xff1a; 方法一&#xff1a;使用JavaScript內置方法 <JAVASCRIPT> // 假設后端返回的數據結構為 { createTime: 2023-05-15T08:30:00.0…

單元測試原則之——不要模擬不屬于你的類型

在單元測試中,不要模擬不屬于你的類型(Don’t mock types you don’t own)是一個重要的原則。這是因為外部庫或框架的類型(如第三方依賴)可能會在未來的版本中發生變化,而你的模擬可能無法反映這些變化,從而導致測試失效。 以下是一個基于Java Mockito 的示例,展示如何…

內網滲透(雜項集合) --- 中的多協議與漏洞利用技術(雜項知識點 重點) 持續更新

目錄 1. NetBIOS 名稱的網絡協議在局域網中內網滲透中起到什么作用 2. 使用 UDP 端口耗盡技術強制所有 DNS 查找失敗&#xff0c;這個技術如何應用在局域網內網滲透測試中 3. 在本地創建一個 HTTP 服務來偽造 WPAD 服務器 什么是 WPAD 服務器&#xff1f;這個服務器是干嘛的…

Git相關筆記1 - 本地文件上傳遠程倉庫

Git相關筆記 目錄 Git相關筆記Git上傳相關文件第一步創建一個倉庫&#xff1a;第二步本地創建空文件夾&#xff1a;第三步開始在gitbush上傳文件&#xff1a;解決外網網絡連接的問題&#xff1a;中文文件的編碼問題&#xff1a;參考資料 Git上傳相關文件 第一步創建一個倉庫&a…

Cocos Creator 進行 Web 發布后,目錄結構解析

在使用 Cocos Creator 進行 Web 發布后&#xff0c;生成的目錄結構通常包含以下內容&#xff0c;下面為你詳細介紹&#xff1a; 1. index.html 這是 Web 項目的入口 HTML 文件&#xff0c;它會加載所需的 JavaScript 文件和資源&#xff0c;從而啟動游戲或應用程序。示例代碼…

C++20的協程簡介

C20 引入了協程&#xff08;Coroutines&#xff09;&#xff0c;這是一種特殊的函數&#xff0c;它可以暫停執行并在之后恢復&#xff0c;而不是像普通函數那樣一旦返回就終止。協程的主要特點在于它能保留自身的執行狀態&#xff0c;這讓異步編程更加簡潔和直觀。以下是對 C20…

通過ansible+docker-compose快速安裝一主兩從redis+三sentinel

目錄 示例主機列表 架構參考 文件內容 安裝腳本 ansible變量&#xff0c;需修改 ansible配置文件和主機清單&#xff0c;需修改 運行方式 驗證故障轉移master 涉及redis鏡像和完整的腳本文件 示例主機列表 架構參考 文件內容 安裝腳本 #!/bin/bashset -e export pa…

Apache Arrow 使用

下述操作參考 Building Arrow C — Apache Arrow v20.0.0.dev267 安裝依賴組件 sudo apt-get install \build-essential \ninja-build \cmake 下載源碼 git clone --recursive --shallow-submodules gitgithub.com:apache/arrow.git 配置 創建build目錄并且進入 mkdir a…

玩轉大語言模型——使用華為官方MindIE-Server鏡像方式部署DeepSeek模型

系列文章目錄 玩轉大語言模型——使用langchain和Ollama本地部署大語言模型 玩轉大語言模型——三分鐘教你用langchain提示詞工程獲得貓娘女友 玩轉大語言模型——ollama導入huggingface下載的模型 玩轉大語言模型——langchain調用ollama視覺多模態語言模型 玩轉大語言模型—…

MCP項目開發-一個簡單的RAG示例

MCP項目開發-一個簡單的RAG示例 前言 前言 客戶端是基于官網的例子改的&#xff0c;模型改成了openai庫連接僅僅使用基礎的RAG流程作為一個演示&#xff0c;包含了以下步驟 query改寫搜索&#xff1a;使用google serper重排序&#xff1a;使用硅基流動的api 大模型api也使用…