3

我正在尝试使用带有动态数据的 C++/QT 显示网页。

  1. 如果用户单击,则应显示网页
  2. 网页应包含表格格式的数据。数据将使用 C++ 从表中读取,并且是动态的。
4

3 回答 3

3

setHtml()您可以使用函数设置 QWebView 的 HTML 内容。看看文档。当用户单击按钮加载 HTML 时调用它。要获取加载的 HTML 代码的内容,您可以在 QWebView 中使用QWebFrame提供的两种方法:
webview->page()->mainFrame()->toPlainText()
webview->page()->mainFrame()->toHTML()
您必须解析 HTML 以从 QWebView 中显示的表中读取数据。

于 2012-05-31T14:58:02.363 回答
2

回答第一个问题

您可以使用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 表。

于 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 回答