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 );
}