動的データでC++/QTを使用してWebページを表示しようとしています。
- ユーザーがクリックすると、Webページが表示されます
- Webページには、表形式のデータが含まれている必要があります。データはC++を使用してテーブルから読み取られ、動的になります。
関数を使用してQWebViewのHTMLコンテンツを設定できsetHtml()
ます。ドキュメントをご覧ください。ユーザーがボタンをクリックしてHTMLをロードするときに呼び出します。ロードされたHTMLコードのコンテンツを取得するには、QWebView内でQWebFrameによって提供される2つのメソッドを使用できます。QWebViewに
webview->page()->mainFrame()->toPlainText()
webview->page()->mainFrame()->toHTML()
表示されるテーブルからデータを読み取るには、HTMLを解析する必要があります。
最初の質問への回答
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テーブルを更新できます。
QWebView、 http: //doc.qt.io/qt-5/qwebview.htmlをご覧ください
上記のウェブサイトからの例
QWebView *view = new QWebView(parent);
view->load(QUrl("http://qt.nokia.com/"));
view->show();
ユーザーがクリックした場所からイベントハンドラーでこのビューを作成すると、すべて正常に機能するはずです。