QtWebkit中浏览器插件的设计-1
我們都知道瀏覽器中有一套由Netscape瀏覽器傳承下來的插件接口,包括webkit,firefox都是支持的,但是那個(gè)開發(fā)起來比較困難,并且是平臺(tái)相關(guān)的,借助于Qt的跨平臺(tái)的特性,可以方便地為Qt開發(fā)出一套跨平臺(tái)的插件。
QtWebkit中插件可以有兩種,一種Mime必須是application/x-qt-plugin或者application/x-qt-styled-widget,而另外一種則無需固定,可以是除了前面的兩種以外任意其它Mime類型。
前一種相對(duì)來說開發(fā)起來比較容易,只需重新實(shí)現(xiàn)
QObject?* QWebPage::createPlugin ( const?QString?&?classid, const?QUrl?&?url, const?QStringList?&?paramNames, const?QStringList?¶mValues?)
這個(gè)函數(shù)即可,這個(gè)函數(shù)會(huì)把HTML文件中的參數(shù)都傳遞進(jìn)來
下面是一個(gè)例子:
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);
//可以進(jìn)行一些處理
return result;
}
};
?
這樣下面的網(wǎng)頁就可以一個(gè)pushbutton了:
<html><body><object type='application/x-qt-plugin' classid='pushbutton' id='mybutton'/></body></html>
并且還可以在JavaScript訪問到QPushbutton,例如:
document.getElementById('mybutton').text將會(huì)返回按鈕上的字符串。
?
另外一種比較麻煩,回在下一篇中講解。
轉(zhuǎn)載于:https://www.cnblogs.com/baizx/archive/2010/07/26/1785573.html
總結(jié)
以上是生活随笔為你收集整理的QtWebkit中浏览器插件的设计-1的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Execute .NET Code un
- 下一篇: JQuery函数在IE浏览器中测试的注意