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来开发插件了,工作量相对会大些。

     

  • 相关阅读:
    Working with WordprocessingML documents (Open XML SDK)
    How to Choose the Best Way to Pass Multiple Models in ASP.NET MVC
    Azure:Manage anonymous read access to containers and blobs
    Convert HTML to PDF with New Plugin
    location.replace() keeps the history under control
    On the nightmare that is JSON Dates. Plus, JSON.NET and ASP.NET Web API
    HTTP Modules versus ASP.NET MVC Action Filters
    解读ASP.NET 5 & MVC6系列(6):Middleware详解
    Content Negotiation in ASP.NET Web API
    Action Results in Web API 2
  • 原文地址:https://www.cnblogs.com/HappyAngel/p/2330746.html
Copyright © 2011-2022 走看看