我在提交给 QWebView 的 HTML 中有一个表格。
该表在应用程序的生命周期中增长。
如果我在旁边管理 html QString 并且每次更新都只是“setHtml”,我会遇到性能问题,向表中添加 1000 行需要几分钟。
难道我没有办法直接在 QWebView 上访问 HTML 并每次都注入新的表格行,直接更新 html 吗?
我相信您想要的是与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);