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
不适用于页面。我必须制作一个新的网络视图才能使其正常工作。我的问题是,这是一种在 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 );
}
相关文章:
- 理解boost::asio-async_read在无需读取内容时的行为
- 你能重载对象变量名本身返回的内容吗
- 如何将内容数组写入文本文件?
- 试图让变量检查数组中的某些内容
- initializer_list中字符串的内容为何为空
- C++宏忽略之后的内容
- 如何通过套接字将文本文件的内容从服务器发送到客户端
- 有没有办法从非C/C++文件中读取C++原始字符串文字的内容
- 如何知道QDataStream不能反序列化某些内容
- 即使我读取了所有内容,在FIFO上打开的QSocketNotifier也会一直启动
- 安装opencv失败-粘贴CMakeError.log的内容
- 在同一模拟中使用静脉和静脉_ inet内容时出现运行时错误
- gtkmm 显示文件内容
- 如何逐行读取文件,每行中的内容都用空格分隔并将其写入新文件中
- 打印时有二叉树问题.用户输入不打印任何内容
- 为什么缓冲区的内容在读取空 rdbuf 时被删除?
- 在C++行尾写一个分号或多个分号是否会改变任何内容
- 链接列表运算符重载没有打印出我想要的内容
- Qt : addToJavaScriptWindowObject 和切换 QWebView 内容
- QWebView 无法显示通过 javascript 设置的外部图像内容 $( "#<node_name>" ).html(<html_content>)