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

上一篇讲到可以通过扩展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;

}

 

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

转载于:https://www.cnblogs.com/baizx/archive/2010/07/28/1786498.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值