QT-Webkit總覽


  最近一直在寫一個基於QT-Webkit的瀏覽器插件,這個項目做了2個月了,一直是基於QT開發,也讓自己對QT-Webkit有了一些了解,所以想把這些經驗記錄下來。

  1 QT-Webkit介紹

  QT-Webkit將Webkit移植到QT的一個開源項目,目前最新的版本是QT-Webkit 2.2,其已經加入到QT 4.8中,正是由於這個開源項目,我們可以很方便的在QT中開發需要渲染網頁的項目,甚至是通過信號和槽機制讓js和C++交互,這些都要歸功於QT-Webkit。使用它可以很方便的開發出一款功能相對完善的瀏覽器來,具體的例子可以看看QT自帶的demo,其強大可見一斑。

  2 QT-Webkit入門

  QT-Webkit在學習上可以從QT自帶的瀏覽器demo入門,閱讀里面的代碼,不懂的查qt-assistant,非常方便。

  其次,在總體把握上,要理解QWebview、QWebpage,QWebframe等類的關系,這幾個類是最核心的類,幾乎所有基於QT-webkit的程序都要用到,同時,QT-Webkit也對cookie,歷史記錄接口做了封裝。還有一點很重要,就是通過QT-Webkit提供的機制讓代碼和頁面的js交互,這個是很重要的,QT-Webkit提供了相對完善的機制,具體可看這里

  3 QT-Webkit對插件的支持

  這里着重說一下QT-Webkit對插件的支持,它支持兩種插件,一種是基於QT-Webkit自有插件,即繼承自QWebPluginFactory的插件,詳見這里。還有一種,是基於NPAPI的插件,其源自Netscape瀏覽器,目前被很多瀏覽器支持。

  這兩種方法各有利弊,

  使用QT-Webkit自有插件系統創建的插件,可以很方便的使用QT-Webkit,甚至是QT提供的各種高層API的封裝。其缺點,也是我目前最糾結的一點是,它無法支持html的z-index,無論怎么設插件的z-index,其始終處於最頂層,也就是把所有其他div全部遮擋,這個似乎是QT-Webkit的已知bug,也有人在stackoverflow上提問,不過也沒有答復,這里也向解決了此問題的同學求助,希望能相互探討下微笑

  而用NPAPI創建的插件則可以解決以上問題,因為它支持window和windowless兩種模式,Flash就是很好的例子。但是其缺點也明顯,是用它的話,相當於放棄QT來開發插件了,工作量相對會大些。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM