gpt4 book ai didi

c++ - Qt : addToJavaScriptWindowObject and switch QWebView content

转载 作者:行者123 更新时间:2023-11-28 02:16:58 24 4
gpt4 key购买 nike

我正在使用 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 );
}

关于c++ - Qt : addToJavaScriptWindowObject and switch QWebView content,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33754760/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com