Seite 1 von 1

QWebReply: Header ändern und in ext. Browser öffnen

Verfasst: 17. Juli 2013 10:59
von dominikz
Hallo Leute,

das ist mein erster Post und ich hoffe, dass die Frage nicht all zu blöd ist ;)

Ich hab die folgende Situation: in einem QWebview wird eine Website geladen, die Popups öffnet um eine PDF zu downloaden.
Das Popup-Handling habe ich nach ein wenig googlen so gelöst:

Code: Alles auswählen

 webpanel *createWindow(QWebPage::WebWindowType type)
{
webpanel *webview = new webpanel;
webview->show();
return webview;
}
Wobei Webpanel von QWebView erbt.
In dem webpanel soll beim öffnen eines Popups mit dateiendung .pdf der header von attachment zu application/pdf geändert werden, sodass ich in dem lokalen system-standart-browser die PDF öffnen kann. Wenn ich nichts ändere, sondern den link nur mit dem system-browser öffnen lasse, dann führt das natürlich dazu, dass auch in diesem nur ein Download angeboten wird, anstatt die PDF mit z.B. dem acrobat plugin zu laden.
Deshalb wollte ich von dem QWebReply den Header ändern und das Reply dann in dem Systembrowser ändern:

Code: Alles auswählen

void webpanel::unsupContent( QNetworkReply* reply )
{
if(reply->url().url().endsWith(".pdf",Qt::CaseInsensitive))
{


reply->setHeader(QNetworkRequest::ContentDispositionHeader,"application/pdf");
QDesktopServices::openUrl(reply->url());
}


}
Aber dabei bekomme ich den folgenden Fehler:
"C:\Qt\Qt5.0.2\5.0.2\mingw47_32\include\QtNetwork\qnetworkreply.h:169:
Fehler:'void QNetworkReply::setHeader(QNetworkRequest::KnownHeaders,
const QVariant&)' is protected"

Wo liegt das Problem und ist der Ansatz, den ich hier gewählt habe, überhaupt der richtige??

Danke für die Hilfe und die Geduld ;)
Dominik