我们都知道浏览器中有一套由Netscape浏览器传承下来的插件接口,包括webkit,firefox都是支持的,但是那个开发起来比较困难,并且是平台相关的,借助于Qt的跨平台的特性,可以方便地为Qt开发出一套跨平台的插件。

QtWebkit中插件可以有两种,一种Mime必须是application/x-qt-plugin或者application/x-qt-styled-widget,而另外一种则无需固定,可以是除了前面的两种以外任意其它Mime类型。

前一种相对来说开发起来比较容易,只需重新实现

QObject * QWebPage::createPlugin ( const QString & classid, const QUrl & url, const QStringList & paramNames, const QStringList &paramValues )

这个函数即可,这个函数会把HTML文件中的参数都传递进来

下面是一个例子:

class PluginPage : public QWebPage

{

public:

PluginPage(QObject *parent = 0)

: QWebPage(parent) {}

protected:

virtual QObject *createPlugin(const QString &classid, const QUrl &url,

const QStringList &paramNames,

const QStringList &paramValues)

{

QObject *result = 0;

if (classid == "pushbutton")

result = new QPushButton();

else if (classid == "lineedit")

result = new QLineEdit();

if (result)

result->setObjectName(classid);

//可以进行一些处理

return result;

}

};

这样下面的网页就可以一个pushbutton了:

<html><body><object type='application/x-qt-plugin' classid='pushbutton' id='mybutton'/></body></html>

并且还可以在JavaScript访问到QPushbutton,例如:

document.getElementById('mybutton').text将会返回按钮上的字符串。

另外一种比较麻烦,回在下一篇中讲解。

转载于:https://www.cnblogs.com/baizx/archive/2010/07/26/1785573.html

QtWebkit中浏览器插件的设计-1相关推荐

  1. android中的插件开发框架,设计并开发一个 Android 的插件化框架

    结合动态加载系列文章的分析,现在开始设计并开发一个 Android 的插件化框架,命名为 Frontia.Frontia 有 "前端" 的意思,寓意着 Android 插件能像前端 ...

  2. ie11加载java插件_IE浏览器中ActiveX插件的使用

    在某些行业的B/S应用系统中会不可避免的要用到ActiveX浏览器插件,而ActiveX插件只能在IE内核浏览器中运行,而常用的IE浏览器的版本众多,从IE6到IE11,总共有6个版本,这就给开发的应 ...

  3. Google浏览器中扩展插件方法

    Google浏览器中扩展插件方法 一.按照下图流程打开谷歌浏览器的"扩展程序". 二.点击打开"开发者模式". 三.点击"加载已解压的扩展程序&quo ...

  4. 实用软件/浏览器插件/网站合集(个人向,更新中)

    文章目录 说明 软件 浏览器插件 Tampermonkey脚本 网站 好的软件,插件和网站能大大提高工作效率. 以下是我认为的好用的软件,个人向,排名不分先后(更新中) 欢迎大家访问我的个人网站 ww ...

  5. 浏览器中Vimium 插件快捷键

    浏览器中Vimium 插件快捷键 Vimium这个名字其实是Vim和Chromium的合体.很多人可能不知道Vim,Vim是一个类似于Vi的著名的功能强大.高度可定制的Linux等平台上的文本编辑器, ...

  6. 如何在苹果电脑Mac浏览器Safari中安装使用浏览器插件

    Safari 作为苹果的御用默认浏览器,随着Mac OS X Lion 的发布重获新生,目前经历了几个版本的迭代,拓展性上虽仍不如 Google Chrome,但在 Mac OS 下,Safari 的 ...

  7. chrome浏览器插件开发-在当前网页中嵌入插件页面

    chrome浏览器插件开发-在当前网页中嵌入插件页面 既然想嵌入插件页面就是需要写html和css 在myPlugin中创建contentCss文件夹,里面创建index.css文件 在manifes ...

  8. android个人中心界面_Android 机也能用上你熟悉的浏览器插件,这些浏览器不可错过...

    在 Android 平台上选择 Chrome 浏览器的人不在少数:有的因为多平台无缝的同步体验,有的因为强大.及时的新功能支持,有的因为完整的 Google 生态服务捆绑-- 但无论出于什么理由,桌面 ...

  9. 【戴嘉乐】IPFS伴侣:一个对IPFS资源管理更加便捷的浏览器插件

    作者简介:戴嘉乐( Mr.Maple ) | 前百度高级研发工程师 | IPFS应用实践者&布道师| 个人网站:https://www.daijiale.cn 微信号:daijiale6239 ...

最新文章

  1. Science杂志 | 人类基因组草图发布20周年,遗留的9大问题
  2. Android10.0 Binder通信原理(二)-Binder入门篇
  3. android 反调试 方案,Android Native反调试—检测TracerPid值
  4. 【CentOS Linux 7】实验1【VMware安装、新建虚拟机;63个基础命令运行结果图】
  5. 在eclipse中安装与配置maven环境
  6. docker重启mysql数据丢失_mysql如何确保数据不丢失的?我们借鉴这种设计思想实现热点账户高并发
  7. 极寒极热天气是否可以使用福禄克DSX2-5000网线测试仪工作
  8. 【OS学习笔记】十一 实模式:中断-软中断和硬中断基本原理
  9. 雄安大学真的来了!占地总面积2550亩!
  10. java幻灯片播放代码_简单常用的幻灯片播放实现代码
  11. jquery-幻灯片效果-编辑中
  12. Mysql 的时区问题:zeroDateTimeBehavior CONVERT_TO_NULL convertToNull
  13. 装修好的房子多久能住 入住需要注意什么?
  14. HTM皮质学习算法资料
  15. C++实现整数值转中文大写
  16. 52类110个主流的Java框架
  17. T0.Games欢迎高端加密NFT入驻
  18. 齐河木凡装饰工程有限公司简介
  19. 粒子群算法改进——压缩因子法
  20. 【淘宝API开发系列】获取商品详情,商品评论、卖家订单接口

热门文章

  1. 4个优化MongoDB的技巧
  2. C#程序集相关的概念
  3. linux+删除乱码的文件,linux 下删除乱码文件-乾颐堂
  4. IllegalArgumentException:argument type mismatch
  5. POI 导出文件以文件流形式返回
  6. Flask 从入门到熟悉(不敢称为精通)
  7. 进程间通信(python)
  8. 16位调色板和32位调色板_使调色板可访问
  9. xd可以用ui动效效果吗_通过动画使UI设计栩栩如生:Adobe XD和After Effects
  10. ios 按钮图片充满按钮_iOS有一些非常危险的按钮-UX评论