2014-01-24 3 views
0

현재 프로젝트에 Qt 4.7을 사용하고 있습니다. postdata가 필요한 웹 페이지를 표시하는 데 필요한 QWebView 개체가 대화 상자에 있습니다 (검색 결과 임). 나는 가능한 한 가깝게 문서를 따라하려고Qt - QWebView :: load() 함수가 제대로 작동하지 않습니다.

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

, 나는 일이를 얻을 수 있었다 url.set*() 줄을 사용하여 url.setUrl(host + path)으로 바꿉니다. 솔직히 나는 그것을 고쳐야하는 이유를 모르겠다. 다른 두 함수가했던 것과 똑같은 일을한다고 생각했기 때문에, 지금은 작동하는 것처럼 보인다.

0

QWebView에서 www.myhost.com/mypath.php를로드하려고합니까?

그냥

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

그건 그것의 일부입니다, 나는 또한 postdata가 필요합니다. – thnkwthprtls

0

사용 그것은 당신이 같은 QByteArray을해야 변수 postdata과의 형식을 사용하지 않는 것으로 나타납니다 그래서

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); 
+0

죄송합니다. 물건을 복사 할 때 오타가 발생했습니다. load() 행은 실제 코드에서 postdata를 사용하고 실수로 잘못 복사했습니다. – thnkwthprtls