我們都知道浏覽器中有一套由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
¶mValues )
這個函數即可,這個函數會把HTML檔案中的參數都傳遞進來
下面是一個例子:
class PluginPage : public QWebPage
{
public:
PluginPage(QObject *parent = 0)
: QWebPage(parent) {}
protected:
virtual QObject *createPlugin(const QString &classid, const QUrl &url,
const QStringList ¶mNames,
const QStringList ¶mValues)
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将會傳回按鈕上的字元串。
另外一種比較麻煩,回在下一篇中講解。