1

QWebViewに送信するHTML内にテーブルがあります。

テーブルは、アプリケーションのライフサイクル中に大きくなります。

側面でhtmlQStringを管理し、更新のたびに「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 に答える