QWebViewに送信するHTML内にテーブルがあります。
テーブルは、アプリケーションのライフサイクル中に大きくなります。
側面でhtmlQStringを管理し、更新のたびに「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);