QWebView的严重限制

时间:2012-08-23 20:08:50

标签: qt qwebview

我在HTML中有一个表,我正在提交给QWebView。

该表在应用程序的生命周期中增长。

如果我在旁边管理html QString而且每次更新都只是“setHtml”我遇到了性能问题,其中向表中添加1000行需要几分钟。

我是不是有办法直接在QWebView上访问HTML并每次都注入新的表行,直接更新html?

1 个答案:

答案 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);