Chinaunix首页 | 论坛 | 博客
  • 博客访问: 233244
  • 博文数量: 56
  • 博客积分: 2480
  • 博客等级: 大尉
  • 技术积分: 475
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-28 10:57
文章分类

全部博文(56)

文章存档

2012年(36)

2011年(4)

2010年(2)

2009年(14)

我的朋友

分类: C/C++

2012-04-25 09:33:31

最近一直在写一个基于QT-Webkit的浏览器插件,这个项目做了2个月了,一直是基于QT开发,也让自己对QT-Webkit有了一些了解,所以想把这些经验记录下来。

  1 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的插件,详见这里。还有一种,是基于的插件,其源自Netscape浏览器,目前被很多浏览器支持。

  这两种方法各有利弊,

  使用QT-Webkit自有插件系统创建的插件,可以很方便的使用QT-Webkit,甚至是QT提供的各种高层API的封装。其缺点,也是我目前最纠结的一点是,它无法支持html的z-index,无论怎么设插件的z-index,其始终处于最顶层,也就是把所有其他div全部遮挡,这个似乎是QT-Webkit的,也有人在,不过也没有答复,这里也向解决了此问题的同学求助,希望能相互探讨下微笑

  而用NPAPI创建的插件则可以解决以上问题,因为它支持window和windowless两种模式,Flash就是很好的例子。但是其缺点也明显,是用它的话,相当于放弃QT来开发插件了,工作量相对会大些。

阅读(2004) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~