3

動的データでC++/QTを使用してWebページを表示しようとしています。

  1. ユーザーがクリックすると、Webページが表示されます
  2. Webページには、表形式のデータが含まれている必要があります。データはC++を使用してテーブルから読み取られ、動的になります。
4

3 に答える 3

3

関数を使用してQWebViewのHTMLコンテンツを設定できsetHtml()ます。ドキュメントをご覧ください。ユーザーがボタンをクリックしてHTMLをロードするときに呼び出します。ロードされたHTMLコードのコンテンツを取得するには、QWebView内でQWebFrameによって提供される2つのメソッドを使用できます。QWebViewに
webview->page()->mainFrame()->toPlainText()
webview->page()->mainFrame()->toHTML()
表示されるテーブルからデータを読み取るには、HTMLを解析する必要があります。

于 2012-05-31T14:58:02.363 に答える
2

最初の質問への回答

QWebViewを使用してQWebView::setHtml()、または QWebView::load()関数を使用して起動HTMLを表示できます。

2番目の質問への回答

この質問に関しては、ページに動的データを設定する方法が複数あります。

1つの方法は、javascript関数を使用してhtmlテーブルを更新できることです。これをhtmlの<script>タグに挿入します。これで、次の関数を使用してデータを渡すことができます(c ++を介して読み取る)。

webView->page()->mainFrame()->evaluateJavaScript(yourJavascript);

さてyourJavascript、c++を介して読み取られたデータからjavascript関数呼び出し文字列を生成する必要があります。

ただし、データベースからJSON形式でデータを取得できる場合は、非常に簡単です。たとえば、QJsonサードパーティライブラリを使用して、次のようにJSONデータを解析およびシリアル化できます。

QByteArray data;   // Say data arrived from the database is stored in this object.

QJson::Parser parser;
QVariantMap map = parser.parse(data).toMap();

// Now serialize it and pass it to javascript function as an argument..

QJson::Serializer serializer;
QString javaScript = "updateHtmlView(" + serializer.serialize(map) + ");";

webView->page()->mainFrame()->evaluateJavaScript(javaScript);

これで、JavaScriptでそのJSONオブジェクトを読み取ることにより、htmlテーブルを更新できます。

于 2012-05-31T15:01:41.680 に答える
0

QWebView、 http: //doc.qt.io/qt-5/qwebview.htmlをご覧ください

上記のウェブサイトからの例

QWebView *view = new QWebView(parent);
    view->load(QUrl("http://qt.nokia.com/"));
    view->show();

ユーザーがクリックした場所からイベントハンドラーでこのビューを作成すると、すべて正常に機能するはずです。

于 2012-05-31T14:20:31.770 に答える