簡體   English   中英

Qt:addToJavaScriptWindowObject並切換QWebView內容

[英]Qt : addToJavaScriptWindowObject and switch QWebView content

我正在使用QWebView顯示一些html內容。 我使用多個html頁面,我必須在它們之間切換並在其上應用addJavaScriptWindowObject方法以加載我的C ++對象。 目前,我正在使用此功能加載新的html頁面:

Q_INVOKABLE bool                myBridge::newView(QString page)
{
    QString path("file:///C:/wamp/www/WLC_Borne/");

    path += page;
    _view->close();
    _view = new WebView;
    QObject::connect(_view, SIGNAL(mouseMoveEvent(QMouseEvent*)), _mediaPlayer, SLOT(stop()));
    _view->page()->mainFrame()->addToJavaScriptWindowObject("bridge", this);
    _view->load(QUrl(path));
    _view->showFullScreen();
    return (true);
}

問題是我總是分配一個新的QWebView ,它為每個新的進程內存使用量增加了5ko。

我創建一個新的QWebView的原因是僅這樣做:

_view->page()->mainFrame()->addToJavaScriptWindowObject("bridge", this);
        _view->load(QUrl(path));
        _view->showFullScreen();

addToJavaScriptWindowObject不適用於該頁面。 我必須創建一個新的webview才能使其正常工作。 我的問題是在html頁面之間切換的一種干凈方法,並使其在每個新頁面上都可以與addToJavaScriptWindowObject方法一起使用嗎?

如果要使方法addToJavaScriptWindowObject ,則必須將頁面連接到這樣的插槽。 像這樣的東西:

bool myBridge::newView( QString page )
{
    _view->close();
    _view = new WebView;
    QObject::connect(_view, SIGNAL(mouseMoveEvent(QMouseEvent*)), _mediaPlayer, SLOT(stop()));
    QObject::connect( _view->page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(addObject()));
    _view->load(QUrl(path));
    _view->showFullScreen();
}

void myBridge::addObject()
{
    frame->addToJavaScriptWindowObject( QString("bridge"), this );
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM