我正在使用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是空白的。有谁知道我可能做错了什么?我觉得它可能很简单,但就像我说我很难找到很多有用的东西。谢谢!
答案 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)
来实现此目的。老实说,我不确定为什么要修复它,因为我有点认为它与之前的其他两个函数做的一样,但现在似乎确实有效。