九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
QT?Webkit?添加JS對象
正文 字體大小:

QT Webkit 添加JS對象

(2011-11-07 11:11:19)
標(biāo)簽:

webkit

添加對象

it


由于QWebFrame 提供了一個addToJavaScriptWindowObject()接口, 所以在QT Webkit下添加一個自定義的
Javascript對象就變得非常的容易,要注意在跨頁面的時候,該對象會被清除,所以你只要重新加回來
就可以了, 這一點跟GTK類似, 只要捕獲WindowObjectCleared信號,在該信號處理函數(shù)里面執(zhí)行
addToJavaScriptWindowObject()就可以了。

這種方法不用去修改Webkit的核心代碼WebCore或者JavascriptCore, 所有工作都在應(yīng)用層面實現(xiàn),
可以說是簡單又實用。

具體可以參考如下源代碼:

// 實現(xiàn)一個新類
class QFoo : public QObject
{
    Q_OBJECT
public:
    QFoo(QObject *parent) {}
    void initialize(QWebView *wv);

public slots:
    void print(const QString &msg);

private slots:
    void addObject();

private:
    QWebFrame *wf;
};


void QFoo::setWebView(QWebView *wv)
{
    wf = wv->page()->mainFrame();
  // Add to the javascript window object
    addObject();
    // connect the signal for javascript window object cleared, which happened
    // at page switching etc.
    connect(wf, SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(addObject()));
}

void QFoo::addObject()
{
    wf->addToJavaScriptWindowObject(QString("QFoo"), this);
}

void QFoo::print(const QString &msg)
{
    qDebug() << "Output the message " << msg;
}


// 測試主函數(shù)
int main(int argc, char *argv[])
{
    QApplication test(argc, argv);

    QWebView *wv = new QWebView();

    QFoo *foo = new QFoo(wv);
    foo->initialize(wv);

    wv->setUrl(QUrl("foo.html"));
    wv->show();

    return test.exec();
}

 

HTML測試代碼很簡單:

<script>
QFoo.print("Hello world!");
</script>

 

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Qt WebKit可以做什么(三)——開發(fā)包含豐富web內(nèi)容的本地應(yīng)用
bt3環(huán)境下使用 Qt 4.4.0 中的QWebView控件(WebKit引擎) - hc...
QT webkit學(xué)習(xí)筆記(1)
第二十九講:WebView學(xué)習(xí)指南 ? { Android學(xué)習(xí)指南 }
實現(xiàn)QT與HTML頁面通信
Qt決定將Web渲染引擎從WebKit改為Chromium
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服