我正在尝试使用带有动态数据的 C++/QT 显示网页。
- 如果用户单击,则应显示网页
- 网页应包含表格格式的数据。数据将使用 C++ 从表中读取,并且是动态的。
回答第一个问题
您可以使用QWebViewQWebView::setHtml()
使用or 函数显示您的启动 html QWebView::load()
。
回答第二个问题
关于这个问题,您可以通过多种方式在页面中设置动态数据。
一种方法是您可以使用javascript函数来更新您的 html 表。您将在 html in<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();
在用户单击的事件处理程序中创建此视图,并且一切正常。