我用 QT Creator 和 QWebView 创建了一个小型网络浏览器。我工作得很好,页面加载速度非常快。但是我怎样才能让我的浏览器能够下载文件呢?我查看了信号和功能列表,但没有找到可以帮助我的东西。如何确定 QUrl 是否包含指向 text/html 以外的文件的链接,以便我可以下载它?
问问题
4477 次
1 回答
10
QWebView 有一个 'QWebPage' 成员,您可以使用它访问它的指针webView.page()
。这是你应该看的地方。QWebPage 有两个信号:downloadRequested(..)
和unsupportedContent(..)
。我相信仅当用户右键单击链接并选择“保存链接”时才会发出 dowloadRequest,而当无法显示目标 URL(不是 html/文本)时会发出 unsupportedContent 。
但是要发出 unsupportedContent ,您应该设置forwardUnsupportedContent
为True
with function 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();
}
请记住, MainWindow::download(..) 和 MainWindow::unsupportedContent(..) 是SLOT
s !
于 2013-05-02T20:32:56.897 回答