天天看點

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 

 &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")

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将會傳回按鈕上的字元串。

另外一種比較麻煩,回在下一篇中講解。

繼續閱讀