成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

QT中使用Webkit簡單寫出源代碼案例分析

移動開發
QT中使用Webkit簡單寫出源代碼案例分析是本文要介紹的內容,WebCore瀏覽器核心組件,可以看作為一個Http解析和顯示的核心庫,包括了對各個腳本的分布處理以及對UI的組織,來考哪詳細內容。

QT中使用Webkit簡單寫出源代碼案例分析是本文要介紹的內容,主要是來學習今日研究了一下Webkit,這個東西是什么東西這里就不做描述了,看不懂就不必往下看了。

這里是以Qt的代碼分支為主進行的分析,復雜的分析個人也有,但是畢竟牽扯到一些機密問題,所以不便公開。(如圖)

Webkit簡單寫出源代碼分析

JaveScripeCore:執行JavaScrip的核心程序,里面包含了腳本解析器、分析器和執行程序。

WebCore:瀏覽器核心組件,可以看作為一個Http解析和顯示的核心庫,包括了對各個腳本的分布處理以及對UI的組織,包含了對基本GUI動作、事件相應、網絡、數據IO、圖形圖像的編解碼等的處理,是核心組件。

Other libraries:其他平臺庫的支持,例如:libsqlite、libpng、libjepg等等。

Platform:平臺支持。

在這里以QT為分析案例

WebCore部分

WebCore\platform\qt:

ClipboardQT:實現了管理剪切板的包裝

ContextMenuQt和ContextMenuItemQt:對于菜單信息的一個封裝,里面沒有GUI的圖形支持。

CookieJarQt:調用webkit封裝的cookitAPI實現對cookie的信息的管理

CursorQt:實現對于光標的封裝,提供了多種狀態的光標式樣。

DragDataQt:用來臨時存儲UI部分拖拽的對象數據,在QT中需要QMImierData支持,在ARM上可以不做考慮實現。

DragImageQt:功能與上面相似,可以不進行支持。

FileChooserQt:用開打開一個本地文件用的功能,里面包含了對GUI的對話框的調用。

FileSystemQt:用于提供對文件的一些IO支持的函數。

KeyboardCodes.h:里面根據平臺的不同定義了相關的鍵值

Localizations:提供不同平臺下返回的一些特定需要的字符串,比如Download Image,都是以函數的形式得到

MenuEventProxy:無用文件,可能是以前版本的QT的支持,新版本沒有用處。

MIMETypeRegistryQT:通過輸入的MIME字符串返回自定義的MIME類型,僅僅是用到了對字符串的處理。

PasteboardQt:對于剪切板的封裝,封裝一些設置剪切板內容的工作

PlatformKeyboardEventQt:主要是2個關于平臺相關的按鍵轉換函數,需要移植

PlatformMouseEventQt:對于鼠標事件的封裝

PlatformScreenQt:封裝了關于得到窗口尺寸的函數,需要重寫

PlatformScrollBarQt:對平臺用的滾動條進行封裝,不同的GUI引擎用到的滾動條接口不一,移植比較麻煩,需要結合上層代碼重寫

PlugInInfoStoreQt:插件管理器,可以考慮參考GTK的方案放棄支持

PopupMenuQt:對彈出式菜單的封裝

QWebPopup:貌似實現了彈出式的菜單,里面的做法是用qcombobox開虛擬了一個菜單

RenderThemeQt:實現了UI部分繪圖的工作,里面區分了各控件的種類然后進行繪制,需要移植,比較麻煩

ScreenQt:無用,沒有編譯

ScrollViewQt:一個必須要用的控件,實現了一些接口的封裝,實現比較麻煩

SearchPopupMenuQt:無用,所有函數返回空即可

SharedTimerQt:一個計時器,QT用的是Qtimer進行封裝

SoundQt:調用一個系統鈴聲的函數

SystemTimeQt:返回系統時間

TemporaryLinkStubs:QT和GTK都沒有實現,可以忽略

ThreadingQt:主要是做了一些線程方面需要支持的封裝,QT的和Gtk的實現的東西不大一樣,大多沒有用處,ms僅僅callOnMainThread函數需要實現

WheelEventQt:需要實現,目的不明

WidgetQt:對于窗口的一個封裝,各個平臺封裝不一,可按照其中一個作為參考

WebCore\platform\text:

里面代碼主要是對于基本字符的處理,個平臺實現方式不一,webkit本身提供一套字符機制,可以沿用,也可以根據平臺重載關鍵部分做一些修改,如QT的方式和mac的方式

WebCore\platform\network:

ResourceResponse.h:寫了一個需要實現的派生類,但是在qt下沒有實際意義,在mac和cf下有具體實現。

其余文件都是針對于Http服務而寫的一些輔助類,由于沒有整體架構概念,目前難以理解

WebCore\platform\graphics:

AffineTransformQt.cpp:對于平臺基本圖形幾何變換用的類函數封裝

ColorQt:封裝Color屬性的類

FloatPointQt:關于Float點屬性類的一個包裝

FloatRectQt:關于浮點數屬性的矩形類包裝

FontCacheQt:關于字體包裝后的一個擴展實現,個平臺封裝的很簡單,基本沒實現

FontCustomPlatformData:對于內存字體的管理,除了mac意外其余幾乎沒有做實現,可參照qt的做法

FontQt:對于字體基本操作的封裝

GraphicsContextQt:基本繪畫的另外上層封裝

IconQt:對Icon處理的類

ImageBufferQt:關于Image處理的幾個函數,可能用于中間數據轉換用

ImageDecoderQt:一個圖片處理的接口類,實現比較復雜

ImageQt:一個圖片的接口類,許多實現依靠外部實現,比較復雜

ImageSourceQt:在上述2個文件之上的又一個封裝,也是實現了關于圖片操作的細節

IntPointQt、IntRectQt、IntSizeQt:這3個類如同名字,僅僅是對于數據結構類的一種封裝

PathQt:對于QPainterPath的一個封裝,其他平臺ms沒有

SimpleFontData:對于字符之上的另一個封裝, QT沒有實現功能,其他平臺有實現

Webkit部分

許多Webcore部分的許多擴展是通過外部的Webkit中的代碼加以實現,還有需要Webkit的對象是通過對Webcore已經原有的類進行集成,其中,比較重要是網絡和數據IO部分,是通過Webkit的對象讀取網絡或者本地的數據資源,另外,其實現的方式是通過線程內的任務模式,有任務隊列進行收發工作,如有另外的Page則通過另外的一個任務隊列進行。

數據IO流程:

首先是上層調用的loader(***),里面就是URL或者是本地文件,對參數進行打包后一步一步,最終調到QWebNetworkInterface::addJob函數,在任務隊列中增加新的任務,如果是本地文件,則用FileIO的形式進行讀取,如果是Http的,則啟動QHttp類的對象進行IO,直到取得數據為止

數據接收完成后會依次調到

  1. MainResourceLoader::didFinishLoading  
  2. FrameLoader::finishedLoading  
  3. DocumentLoader::finishedLoading 

其中就有對于數據分析和刷新GUI的工作。

所以可以看出,除了GUI需要移植意外,還有很多網絡工作需要完成,QT版本是通過Http類進行Http方面的收發工作,Mac的流程與QT如同,需要考慮移植Http開源庫進行收發。

補充:看過CURL的庫,支持Http協議的手法和解析,但是CURL庫需要的庫我在這里列一下,對于CURL,筆者沒有進行多余分析。

小結:QT中使用Webkit簡單寫出源代碼案例分析的內容介紹完了,希望通過本文的學習能對你有所幫助!

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-09-01 14:04:45

QT Webkit插件

2011-09-01 15:22:16

Qt WebKitWebKit

2011-10-13 14:26:12

Qt WebKitWebKit

2011-06-14 11:48:38

Webkit QT

2011-08-29 10:22:48

QtWebkit 模塊HTML文檔

2011-09-09 16:00:02

Android Web實例

2011-02-23 14:46:21

FileZilla

2011-02-23 14:54:58

FileZilla

2011-02-23 14:16:43

FileZilla

2011-02-23 14:39:27

FileZilla

2011-02-23 15:11:27

FileZilla

2011-02-23 15:33:42

FileZilla

2011-02-23 14:26:28

FileZilla

2011-02-23 15:21:06

FileZilla

2011-02-23 15:26:01

FileZilla

2011-02-23 13:47:33

FileZilla

2011-06-15 10:08:01

Qt CVS

2011-09-09 17:24:39

Qt Webkit模塊

2011-08-29 10:11:49

QTWindowsVisual Stud

2011-08-29 11:25:29

QTWebKit鼠標
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久成人免费视频 | 免费看爱爱视频 | 国产亚洲一区二区三区在线观看 | 国产精品精品久久久 | 在线免费观看毛片 | 麻豆视频国产在线观看 | 中文在线一区二区 | 亚洲成人激情在线观看 | 午夜在线精品 | 色呦呦网站 | 美国十次成人欧美色导视频 | 一区视频在线免费观看 | 一区二区在线免费观看视频 | 国产色婷婷精品综合在线手机播放 | 国产精品一区二区三 | 精品国产一区三区 | 免费成人高清在线视频 | 在线视频中文字幕 | 伊人久久综合 | 欧美综合视频 | 国产成人午夜电影网 | 国产免费观看一区 | 欧美成人精品激情在线观看 | 一区二区三区在线免费观看 | 亚av在线 | 国产三区视频在线观看 | 成人在线精品 | 成人免费在线播放视频 | 国产伦精品一区二区三区精品视频 | 五月网婷婷| 99九九久久| 黄视频国产 | 欧美一级一区 | 日韩成人免费av | 国产天天操 | 中文字幕在线观看一区二区 | 九九热国产精品视频 | 国产亚洲日本精品 | 久久久精品国产 | 亚洲精品久久久久久久不卡四虎 | 日本中文字幕视频 |