zoukankan      html  css  js  c++  java
  • QTWebkit总览

      最近一直在写一个基于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来开发插件了,工作量相对会大些。

     

  • 相关阅读:
    shopping car 1.0
    文件分类
    求1-100的所有数的和
    输出 1-100 内的所有奇数和
    求1-2+3-4+5 ... 99的所有数的和
    关闭提示的下拉框
    h5页面乱码-设置编码
    常用的css
    渲染后新元素没有绑定事件
    爬虫日记-关于一些动态爬取
  • 原文地址:https://www.cnblogs.com/HappyAngel/p/2330746.html
Copyright © 2011-2022 走看看