[Qt教程] 第40篇 网络(十)WebKit初识
生活随笔
收集整理的這篇文章主要介紹了
[Qt教程] 第40篇 网络(十)WebKit初识
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
[Qt教程]?第40篇 網絡(十)WebKit初識
??|?查看: 521|?回復: 10| WebKit初識 版權聲明 該文章原創于作者yafeilinux,轉載請注明出處! 導語 WebKit是一個開源的瀏覽器引擎。Qt中提供了基于WebKit的QtWebKit模塊,它包含了一組相關的類。QtWebKit提供了一個Web瀏覽器引擎,使用它便可以很容易的將萬維網(WorldWide Web)中的內容嵌入到Qt應用程序中。與此同時,本地也可以對Web內容進行控制。QtWebKit可以呈現HTML(HyperTextMarkup Language,超文本標記語言)文檔、XHTML(Extensible HyperTextMarkup Language,可擴展超文本標記語言)文檔和SVG(Scalable VectorGraphics,可縮放矢量圖形)文檔,風格使用CSS(Cascading StyleSheets,層疊樣式表),腳本使用JavaScript。在JavaScript執行環境和Qt對象模型間搭建的橋梁,實現了使用WebKit的JavaScript環境訪問本地對象。關于這一點,大家可以在幫助中參考The QtWebKit Bridge關鍵字對應的文檔。通過整合Qt的網絡模塊,實現了從Web服務器、本地文件系統甚至Qt資源系統中透明的加載Web頁面。 環境:Windows Xp + Qt 4.8.5+Qt Creator2.8.0 目錄 一、簡單應用 二、擴展應用 正文 一、簡單應用 下面我們來實現一個可以打開特定網頁的程序。新建空的Qt項目,在pro項目文件中添加一行代碼:QT += webkit,然后向項目中添加一個main.cpp文件,并在其中添加如下代碼: #include?<QWebView> #include?<QApplication> int?main(int argc, char* argv[]) { ? ??QApplication?a(argc,?argv); ? ??QWebView?view; ? ??view.load(QUrl("http://www.qter.org")); ? ??view.show(); ? ??return?a.exec(); } 要使用WebKit,就要先添加webkit模塊。QWebView是QtWebKit模塊主要的窗體部件,它可以在各種應用程序中用來顯示Internet上的網頁內容。QWebView作為一個窗口部件,可以嵌入到窗體或者圖形視圖部件中。 QWebView用來顯示Web頁面,每個QWebView實例都包含一個QWebPage對象。QWebPage提供了對一個頁面的文檔結構的訪問,描述了如框架(frame)、訪問歷史記錄和可編輯內容的撤銷/重做棧等特色。每一個QWebPage都包含一個QWebFrame對象作為它的主框架。在HTML中的每一個單獨的框架都可以使用QWebFrame來表示,這個類包含了到JavaScript窗口對象的橋梁,而且可以進行繪制。在QWebPage的主框架中可以包含很多的子框架。 HTML文檔中單獨的元素可以通過DOM JavaScript接口進行訪問,在QtWebKit中與這個接口等價的接口由QWebElement來表示。QWebElement對象可以使用QWebFrame的findAllElement()和findFirstElement()函數來獲取。一般的網頁瀏覽器的特色設置都可以通過QWebSettings類來配置,可以通過默認設置為所有的QWebPage實例提供默認值。單獨的屬性可以使用頁面指定的設置對象進行重寫。 二、擴展應用 下面再來看一個可以隨意更改網址并且可以顯示網站logo的例子。新建Qt Gui應用,項目名稱為“webview”,類名和基類保持“MainWindow”和“QMainWindow”不變。完成后向webview.pro文件中添加QT += webkit一行代碼,并按下Ctrl + S保存該文件。 1.下面到mainwindow.h文件中,先添加頭文件: #include?<QWebView> #include?<QLineEdit> 然后添加槽的聲明: protected?slots: ? ??void?changeLocation();? ???//?改變路徑 ? ??void?setProgress(int);? ???//?更新進度 ? ??void?adjustTitle();? ?? ???//?更新標題顯示 void finishLoading(bool);??// 加載完成后進行處理 再添加對象和變量定義: QWebView?*view; QLineEdit?*locationEdit; int?progress; 2.下面到mainwindow.cpp文件中,在構造函數中添加如下代碼: 3.下面添加那幾個槽的定義: void?MainWindow::changeLocation() { ? ??QUrl?url?=?QUrl(locationEdit->text()); ? ??view->load(url); ? ??view->setFocus(); } void?MainWindow::setProgress(int p) { ? ??progress?=?p; ? ??adjustTitle(); } void?MainWindow::adjustTitle() { ? ??if?(?progress?<=?0?||?progress?>=?100)?{ ? ?? ??setWindowTitle(view->title()); ? ??}?else?{ setWindowTitle(QString("%1 (%2%)").arg(view->title()).arg(progress)); ? ??} } void?MainWindow::finishLoading(bool finished) { ? ??if?(finished)?{ ? ?? ??progress?=?100; ? ?? ??setWindowTitle(view->title()); ? ??}?else?{ ? ?? ??setWindowTitle("web page loading error!"); ? ??} } 下面運行程序,效果如下圖所示: 結語 WebKit是一個很龐大的體系,我們這里只是講解了其最基本的應用,有興趣的朋友可以結合Qt文檔來進一步的學習。 涉及到的代碼:??myweb.rar???webview.rar?? |
總結
以上是生活随笔為你收集整理的[Qt教程] 第40篇 网络(十)WebKit初识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Qt教程] 第39篇 网络(九)进程和
- 下一篇: JAVA线程的interrupt