QtWebkit 模組提供了一個在Qt中使用web browser的engine,這使得我們在qt的應用程式中使用全球資訊網上的內容變得很容易, 而且對其網頁內容的控制也可以通過native controls 實現。
QtWebkit 具有渲染HTML,XHTML和SVG 文檔, 使用CSS排版,運行JavaScript等功能。
在JavaScript 運行環境和Qt object model 直接的橋接技術使得自訂的QObject 可以在JavaScript代碼中使用。和Qt network module 的整合使得網頁可以通過從伺服器,本地檔案系統,甚至qt的資源系統中下載。
另外為了提供渲染特性,可以使用HTML元素的
contenteditable屬性,使HTML文檔可以被使用者編輯。
QtWebkit是基於開源的WebKit engine的。更多資訊可以到http://www.webkit.org查看。
為了使用Qtwebkit模組中的類,我們需要在相關標頭檔中加入
#include <QtWebKit>, 在工程的pro檔案中添加 QT += webkit語句。
QtWebkit 高層的架構:
QWebView 主要用來查看網頁,一個QWebView的執行個體中有一個QWebPage.
QWebPage可以訪問這個頁面的文檔結構,它主要描述如Frames,he navigation history, 和編輯內容的the undo/redo stack
HTML文檔可以嵌套到一個frameset中個frame中。HTML一個獨立的
frame是通過QWebFrame類展示的。這個類中包含了到JS window object的bridge 和
用於重新整理的QPainter。每一個QWebPage 擁有一個QWebFrame作為其 main frame,一個main frame
可以包含多個child frame。每一個的Frame都有一個自己的JavaScript Context。QWebFrame::addToJavaScriptWindowObject()可以使Qt C++中的object 從JavaScript函數中訪問。 QWebFrame::evaluateJavaScript()可以使使用者在C++代碼中直接運行JavaScript代碼。
一個HTML文檔中獨立的元素可以通過在同一個頁面中的DOM JavaScript 介面訪問。對應的類是QWebElement。可以使用CSS選取器通過QWebFrame
's
findAllElements()
和
findFirstElement()
函數擷取QWebElement對象。
QWebSetting 提供了對瀏覽器常用的各種屬性,和各種設定的配置。如:JavaScript enabled, plugin enabled等。通過其預設設定可以顯示所有QWebPage執行個體的預設配置。個別的屬性可以通過這個頁面的setting
來設定。全域的Setting使用QWebSetting::globalSettings(), 某個頁面的settings 用QWebPage::settings()。
QWebHsitory 主要是用來存放QWebPage的訪問記錄,並且提供對於導航到相關頁面的支援。
QWebHistoryInterface 提供了一個實現訪問曆史串連的介面。
注意:
僅在案頭系統中提供
對Netscape plugin 的支援。
自從WebKit支援
Netscape Plugin API, qt的應用程式可以顯示當前平台上可用的常見plugin。為了使plugin的支援性可用,使用者必須安裝對應的plugin,並且當前應用程式的QWebSetting::PluginEnabled 設定為可用。
QNetworkAccessManager 是一個可以發送和接收資料的非同步API。它可以看做是post/put/get/head API。它也提供了對cookie和session的支援。