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将会返回按钮上的字符串。

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

原文地址:https://www.cnblogs.com/baizx/p/1785573.html