1

我在提交给 QWebView 的 HTML 中有一个表格。

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

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

难道我没有办法直接在 QWebView 上访问 HTML 并每次都注入新的表格行,直接更新 html 吗?

4

1 回答 1

1

我相信您想要的是与QWebFrame进行交互,这是最低级别的对象。您可以通过以下方式访问它: QWebView->page()->mainFrame()

从 中QWebFrame,您可以使用evaluateJavaScript()简单地将片段发送到页面以执行。

addToJavaScriptWindowObject或者,您可以使用在 Qt 代码和 javascript 页面之间架起桥梁的框架注册 QObject 。您可以在此处阅读更多详细信息。但是这种方法会让 javascript 端将函数定义为“插槽”并连接到 QObject 上定义的信号,例如updateTable(). 然后,每当您在 Qt 端执行某些操作并使用该信号发出数据时,javascript 都会捕获并处理它。

Qt

 QWebFrame *frame = myWebPage->mainFrame();
 frame->addToJavaScriptWindowObject("tableHandler", tableHandlerObject);

Javascript

 function handleTableUpdate() { ... }
 ...
 tableHandler.updateReady.connect(handleTableUpdate);
于 2012-08-23T22:55:41.183 回答