詳解Qt Webkit模塊應(yīng)用學(xué)習(xí)筆記
Qt Webkit模塊詳細(xì)介紹是本文要介紹的內(nèi)容,Qt Webkit模塊提供了一個(gè)在Qt中使用webbrowser的engine,這使得我們?cè)趒t的應(yīng)用程序中使用萬(wàn)維網(wǎng)上的內(nèi)容變得很容易,而且對(duì)其網(wǎng)頁(yè)內(nèi)容的控制也可以通過(guò)nativecontrols實(shí)現(xiàn)。
Qt Webkit具有渲染HTML,XHTML和SVG文檔,使用CSS排版,運(yùn)行JavaScript等功能。
在JavaScript運(yùn)行環(huán)境和Qtobjectmodel直接的橋接技術(shù)使得自定義的QObject可以在JavaScript代碼中使用。和Qtnetworkmodule的整合使得網(wǎng)頁(yè)可以通過(guò)從服務(wù)器,本地文件系統(tǒng),甚至qt的資源系統(tǒng)中下載。
另外為了提供渲染特性,可以使用HTML元素的contenteditable屬性,使HTML文檔可以被用戶編輯。
QtWebkit是基于開(kāi)源的WebKitengine的。更多信息可以到http://www.webkit.org查看。
為了使用Qtwebkit模塊中的類,我們需要在相關(guān)頭文件中加入#include
Qt Webkit高層的架構(gòu):

QWebView主要用來(lái)查看網(wǎng)頁(yè),一個(gè)QWebView的實(shí)例中有一個(gè)QWebPage.
QWebPage可以訪問(wèn)這個(gè)頁(yè)面的文檔結(jié)構(gòu),它主要描述如Frames,henavigationhistory,和編輯內(nèi)容的theundo/redostack
HTML文檔可以嵌套到一個(gè)frameset中個(gè)frame中。HTML一個(gè)獨(dú)立的frame是通過(guò)QWebFrame類展示的。這個(gè)類中包含了到JSwindowobject的bridge和用于刷新的QPainter。每一個(gè)QWebPage擁有一個(gè)QWebFrame作為其mainframe,一個(gè)mainframe可以包含多個(gè)childframe。每一個(gè)的Frame都有一個(gè)自己的JavaScriptContext。QWebFrame::addToJavaScriptWindowObject()可以使QtC++中的object從JavaScript函數(shù)中訪問(wèn)。QWebFrame::evaluateJavaScript()可以使用戶在C++代碼中直接運(yùn)行JavaScript代碼。
一個(gè)HTML文檔中獨(dú)立的元素可以通過(guò)在同一個(gè)頁(yè)面中的DOMJavaScript接口訪問(wèn)。對(duì)應(yīng)的類是QWebElement??梢允褂肅SS選擇器通過(guò)QWebFrame'sfindAllElements()和findFirstElement()函數(shù)獲取QWebElement對(duì)象。
QWebSetting提供了對(duì)瀏覽器常用的各種屬性,和各種設(shè)置的配置。如:JavaScriptenabled,pluginenabled等。通過(guò)其默認(rèn)設(shè)置可以顯示所有QWebPage實(shí)例的默認(rèn)配置。個(gè)別的屬性可以通過(guò)這個(gè)頁(yè)面的setting來(lái)設(shè)置。全局的Setting使用QWebSetting::globalSettings(),某個(gè)頁(yè)面的settings用QWebPage::settings()。
QWebHsitory主要是用來(lái)存放QWebPage的訪問(wèn)歷史記錄,并且提供對(duì)于導(dǎo)航到相關(guān)頁(yè)面的支持。
QWebHistoryInterface提供了一個(gè)實(shí)現(xiàn)訪問(wèn)歷史連接的接口。
注意:僅在桌面系統(tǒng)中提供對(duì)Netscapeplugin的支持。
自從WebKit支持NetscapePluginAPI,qt的應(yīng)用程序可以顯示當(dāng)前平臺(tái)上可用的常見(jiàn)plugin。為了使plugin的支持性可用,用戶必須安裝對(duì)應(yīng)的plugin,并且當(dāng)前應(yīng)用程序的QWebSetting::PluginEnabled設(shè)置為可用。
QNetworkAccessManager是一個(gè)可以發(fā)送和接收數(shù)據(jù)的異步API。它可以看做是post/put/get/headAPI。它也提供了對(duì)cookie和session的支持。
小結(jié):
Qt Webkit模塊介紹的內(nèi)容介紹完了,希望通過(guò)Qt Webkit內(nèi)容的學(xué)習(xí)能對(duì)你有所幫助!