2012-12-06 40 views
1

我想弄清楚我的Qt瀏覽器應用程序可以從我們的Web應用程序下載一個Word文檔的方式。 Web應用程序是用ExtJS編寫的,當用戶點擊「下載報告」按鈕時(在諸如Chrome之類的瀏覽器中),javascript事件偵聽器檢測到該點擊並打開一個0px0px iframe和文件下載。我不確定如何在Qt中複製這個瀏覽器功能?用Qt下載文件?

當我點擊鏈接時,我得到一個網絡回覆"Operation canceled" 5

什麼類/方法最適合檢索這些文件?

enter image description here

+0

在黑暗中只是一個鏡頭:你在HTTP檢查值:// QT -project.org/doc/qt-4.8/qwebsettings.html#WebAttribute-enum?特別是像JavascriptCanOpenWindows? –

+0

感謝您的提示,我已經啓用它,但仍然沒有效果,當我點擊「下載報告」鏈接時操作終止。我認爲這是NetworkAccessManager的工作,但不知道如何實現它? – Kal

回答

4

下載你需要的文件:一個QNetworkAccessManager在這種情況下HTTP。 a QFile在這種情況下文件。 一個QNetworkReply在這種情況下答覆 答覆與寫入通過接收的字節QNetworkAccessManager在這種情況下,槽被調用readingReadyBytes()

所以我創建請求和連接槽連接我的槽:

const QNetworkRequest& request = QNetworkRequest(url); 
reply = http->get(request); 
QObject::connect(reply, SIGNAL(readyRead()), this, 
     SLOT(readingReadyBytes())); 

然後創建我的槽:

void yourClass::readingReadyBytes() { 
    file->write(reply->read(reply->bytesAvailable())); 
} 

終於你必須保存並關閉你的文件。當QNetworkAccessManager發出完成信號.. 這是我記得,我認爲這是所有tipically做..

+2

謝謝@riskio :) – Kal