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?¶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")
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/archive/2010/07/26/1785573.html
總結
以上是生活随笔為你收集整理的QtWebkit中浏览器插件的设计-1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Execute .NET Code un
- 下一篇: [zz]WCF分布式开发步步为赢(0):