2013-05-02 54 views
4

我用QT Creator和QWebView創建了一個小型網頁瀏覽器。我工作得很好,頁面加載非常快。但是,如何讓我的瀏覽器能夠下載文件?我查看了信號和功能列表,但沒有找到可以幫助我的東西。 我如何知道QUrl是否包含指向text/html以外的文件的鏈接,以便我可以下載它?如何從QWebView下載文件?

回答

9

QWebView有一個'QWebPage'會員,您可以通過webView.page()訪問它的指針。這是你應該看的地方。 QWebPage有兩個信號:downloadRequested(..)unsupportedContent(..)。我相信dowloadRequest僅在用戶右鍵單擊鏈接並選擇「保存鏈接」時發出,而當目標網址無法顯示時(不是HTML /文本),會發出unsupportedContent。

但是,對於不支持的內容發出,您應該設置forwardUnsupportedContentTrue功能webPage.setForwardUnsupportedContent(true)。下面是我創建了一個小例子:

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 

    ui->webView->page()->setForwardUnsupportedContent(true); 
    connect(ui->webView->page(),SIGNAL(downloadRequested(QNetworkRequest)),this,SLOT(download(QNetworkRequest))); 
    connect(ui->webView->page(),SIGNAL(unsupportedContent(QNetworkReply*)),this,SLOT(unsupportedContent(QNetworkReply*))); 
} 

MainWindow::~MainWindow() 
{ 
    delete ui; 
} 

void MainWindow::download(const QNetworkRequest &request){ 
    qDebug()<<"Download Requested: "<<request.url(); 
} 

void MainWindow::unsupportedContent(QNetworkReply * reply){ 

    qDebug()<<"Unsupported Content: "<<reply->url(); 

} 

記住,主窗口::下載(..)和主窗口:: unsupportedContent(..)是SLOT小號!

+0

非常感謝!現在我可以讓瀏覽器完成了! – StefanEuSunt 2013-05-03 05:42:51