zoukankan      html  css  js  c++  java
  • QtWebkit中浏览器插件的设计1

    我们都知道浏览器中有一套由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将会返回按钮上的字符串。

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

  • 相关阅读:
    从jQuery看JavaScript匿名函数与闭包
    向properties文件中写入信息(针对获取properties文件失败的总结)
    windows系统下的redis启动教程
    第零次作业
    C语言博客作业02循环结构
    c语言博客作业03函数
    第一次作业
    笔记
    整型类型
    鸡和兔
  • 原文地址:https://www.cnblogs.com/baizx/p/1785573.html
Copyright © 2011-2022 走看看