QtWebkit中浏览器插件的设计-3

简介: 上一篇讲到可以通过扩展QWebPage接口进行动态载入插件,但是插件的接口并没有明确,这一篇通过介绍自定义的接口来实现插件的动态载入。 首先是接口的定义: class WebKitPluginInteface {     public:         virtual...

上一篇讲到可以通过扩展QWebPage接口进行动态载入插件,但是插件的接口并没有明确,这一篇通过介绍自定义的接口来实现插件的动态载入。

首先是接口的定义:

class WebKitPluginInteface

{

    public:

        virtual ~WebKitPluginInteface(){};

        virtual QList<QWebPluginFactory::Plugin> plugins()const =0;

        virtual QObject *create(const QString &mimeType,

                const QUrl &url,

                const QStringList &argumentNames,

                const QStringList &argumentValues) const =0;

};

 

Q_DECLARE_INTERFACE(WebKitPluginInteface, "baizx.cnblogs.com/1.0")

 

这样自定义的插件就可以通过实现这个接口来实现定制的插件。下面是一个例子:

class TestPlugin :public QObject,public WebKitPluginInteface

{

Q_OBJECT

Q_INTERFACES(WebKitPluginInteface)

    public:

        TestPlugin(QObject * parent=0): WebkitPlugin(parent){};

        virtual ~TestPlugin(){};

        virtual QList<QWebPluginFactory::Plugin> plugins()const ;

        virtual QObject *create(const QString &mimeType,

                const QUrl &url,

                const QStringList &argumentNames,

                const QStringList &argumentValues) const ;

};

 

QList<QWebPluginFactory::Plugin> TestPlugin::plugins()const

{

    QList<QWebPluginFactory::Plugin> plugins ;

    QWebPluginFactory::Plugin plugin;

    QWebPluginFactory::MimeType mimeType;

    QStringList strings;

    plugin.name="testplugin";

    plugin.description="testplugin !!!";

    mimeType.name="application/x-textedit";

    mimeType.description="test textedit";

    strings.append(".etxt");

    mimeType.fileExtensions=strings;

    QList<QWebPluginFactory::MimeType> mimeTypes;

    mimeTypes.append(mimeType);

    plugin.mimeTypes=mimeTypes;

    plugins.append(plugin);

    return plugins;

}

QObject *TestPlugin::create(const QString &mimeType,

                const QUrl &url,

                const QStringList &argumentNames,

                const QStringList &argumentValues) const

{

    QTextEdit * edit= new QTextEdit();

edit->setObjectName("我是插件");

    edit->setPlainText(mimeType + url.toString() );

    Q_UNUSED(argumentNames);

    Q_UNUSED(argumentValues);

    return edit;

}

 

这样一个简单的插件就创建完毕了,具体实际应用中可能会用到很到参数,并且会载入实际的内容,这里只是一个演示

目录
相关文章
|
8月前
|
开发者
查看edge浏览器插件的安装位置并将插件安装到别的浏览器
查看edge浏览器插件的安装位置并将插件安装到别的浏览器
683 1
|
8月前
|
文字识别 安全 JavaScript
6款超实用的Edge浏览器插件,让你的浏览器瞬间开挂!
Microsoft Edge是由微软开发的一款网页浏览器,致力于提供一个现代化、高效率、安全可靠的网络浏览器,以满足用户对于网络浏览的各种需求。
360 1
|
8月前
|
JavaScript
浏览器插件crx文件--JS混淆与解密
浏览器插件crx文件--JS混淆与解密
199 0
|
4月前
|
数据可视化 Java Windows
Elasticsearch入门-环境安装ES和Kibana以及ES-Head可视化插件和浏览器插件es-client
本文介绍了如何在Windows环境下安装Elasticsearch(ES)、Elasticsearch Head可视化插件和Kibana,以及如何配置ES的跨域问题,确保Kibana能够连接到ES集群,并提供了安装过程中可能遇到的问题及其解决方案。
Elasticsearch入门-环境安装ES和Kibana以及ES-Head可视化插件和浏览器插件es-client
|
2天前
|
Web App开发 搜索推荐 开发者
浏览器插件上架指南:如何把你的产品搬上浏览器插件市场
在实践了 Chrone、Firefox、Edge、Opera 等 几个主要的插件平台的上架发布工作后,我觉得很有必要把这个过程和思考记录下来,分享给大家,希望能提供一些参考和避坑的经验。我想通过这篇文章,和大家聊聊「为什么我要做这件事」,以及「这个系列文章会包含哪些内容」。我想用一个系列的文章,记录我是如何把 EmojiClick 搬到浏览器插件市场的,也给大家提供一些借鉴经验。
43 19
|
4月前
|
安全 Oracle Java
edge浏览器加载java插件
edge浏览器加载java插件
299 1
|
5月前
|
编解码 JavaScript 前端开发
JS逆向浏览器脱环境专题:事件学习和编写、DOM和BOM结构、指纹验证排查、代理自吐环境通杀环境检测、脱环境框架、脱环境插件解决
JS逆向浏览器脱环境专题:事件学习和编写、DOM和BOM结构、指纹验证排查、代理自吐环境通杀环境检测、脱环境框架、脱环境插件解决
157 1
|
5月前
|
Web App开发 JavaScript 前端开发
如何在浏览器中安装使用Vue开发者工具?Vue开发者工具的安装使用?可直接提取插件安装使用
这篇文章介绍了如何在浏览器中安装和使用Vue开发者工具,提供了两种下载方式,包括直接下载编译好的插件和从GitHub上下载源代码后进行打包。文章还详细说明了在Chrome浏览器中加载插件的步骤,以及插件在Vue项目和非Vue项目中的不同表现。
如何在浏览器中安装使用Vue开发者工具?Vue开发者工具的安装使用?可直接提取插件安装使用
|
5月前
|
Web App开发 前端开发 JavaScript
手摸手教你,从0到1开发一个Chrome浏览器插件
开发 Chrome 插件既有趣又具成就感。本教程将引导你从零开始,逐步创建一个简单的 Chrome 插件。首先了解 Chrome 插件是可增强浏览器功能的小程序。以一个基础示例开始,你将学习如何设置开发环境,包括安装 Chrome 和准备文本编辑器,并掌握 HTML、CSS 和 JavaScript 的基础知识。接着,我们将构建插件的基本结构,涉及 `manifest.json` 配置文件、`background.js` 后台脚本、`popup.html` 用户界面以及 `style.css` 样式表。
401 8
|
5月前
|
数据采集 JSON JavaScript