我在HTML中有一个表,我正在提交给QWebView。
该表在应用程序的生命周期中增长。
如果我在旁边管理html QString而且每次更新都只是“setHtml”我遇到了性能问题,其中向表中添加1000行需要几分钟。
我是不是有办法直接在QWebView上访问HTML并每次都注入新的表行,直接更新html?
答案 0 :(得分:1)
我相信你想要的是与QWebFrame互动,这是最低级别的对象。您可以通过以下方式访问它:QWebView->page()->mainFrame()
从QWebFrame
,您可以使用evaluateJavaScript()
简单地将代码段发送到页面以供执行。
或者您可以使用addToJavaScriptWindowObject
在框架中注册QObject,它在您的Qt代码和javascript页面之间架起桥梁。你可以阅读more in detail here。但是这种方法会让javascript端将函数定义为“槽”并连接到QObject上定义的信号,例如updateTable()
。然后每当你在Qt端做某事并用该信号发出数据时,javascript就会抓住并处理它。
<强> Qt的强>
QWebFrame *frame = myWebPage->mainFrame();
frame->addToJavaScriptWindowObject("tableHandler", tableHandlerObject);
<强> Javscript 强>
function handleTableUpdate() { ... }
...
tableHandler.updateReady.connect(handleTableUpdate);