Qt - QWebView :: load()函数无法正常工作

时间:2014-01-24 19:13:43

标签: c++ qt qt4 qwebview

我正在使用Qt 4.7作为我当前的项目。我在Dialog中有一个QWebView对象,我需要显示一个需要postdata的网页(这是搜索的结果)。到目前为止,我有以下内容:

QNetworkAccessManager *nam;
ui->webView->page()->setNetworkAccessManager(nam);
QUrl url;
url.setHost("http://myhost.com");
url.setPath("/mypath.php");
QString postdata("value1=x&value2=y");

QNetworkRequest request(url);
ui->webView->load(request, QNetworkAccessManager::PostOperation, postdata.toStdStdring().c_str());

我试图尽可能地密切关注文档,但他们对此功能的描述非常缺乏,而且我在网上找到了很多关于它的内容。当我在浏览器中使用相同的主机和路径运行它,以及我通过篡改请求确定的相同数据时,我得到了正确的页面。但是,当我在应用程序中运行它时,webView是空白的。有谁知道我可能做错了什么?我觉得它可能很简单,但就像我说我很难找到很多有用的东西。谢谢!

3 个答案:

答案 0 :(得分:0)

您是否只是想在QWebView中加载www.myhost.com/mypath.php?

只需使用

QUrl url("http://myhost.com/mypath.php");
ui->webView->load(url);

答案 1 :(得分:0)

您似乎没有使用变量postdata,其类型应为QByteArray,如下所示:

QUrl url;
url.setHost("http://myhost.com");
url.setPath("/mypath.php");

QByteArray postdata;
postdata.append("value1=x");
postdata.append("&value2=y");

ui->webView->load(QNetworkRequest(url), QNetworkAccessManager::PostOperation, postdata);

答案 2 :(得分:0)

因此,我可以通过url.set*()行并将其替换为url.setUrl(host + path)来实现此目的。老实说,我不确定为什么要修复它,因为我有点认为它与之前的其他两个函数做的一样,但现在似乎确实有效。