我有一个应该通过网络下载文件的程序。只要文件很小(a)如果我将来自QNetworkReply的信号与下载进度连接到其中一个插槽,则应用程序崩溃,并带有std::bad_alloc
b)如果我没有连接来自QNetworkReply的任何信号,则应用程序将停止运行73%。
任何帮助大都赞赏。
这是我在连接和插槽中使用的代码:
QNetworkReply* reply = network_access_manager_->get(request);
connect(reply,SIGNAL(downloadProgress(qint64,qint64)),parent_,SLOT(downloadProgress(qint64,qint64)));
这是广告位:
void MainWindow::downloadProgress(qint64 bytesReceived,qint64 bytesTotal)
{
try
{
ui->label->setText(QString::number(bytesReceived));
ui->label_2->setText(QString::number(bytesTotal));
ui->progressBar->setRange(0,bytesTotal);
ui->progressBar->setValue(bytesReceived);
}
catch(std::exception& e)
{
qDebug() << e.what();
}
}
最佳答案
阅读QNetworkReply的文档:
因此,只需在下载过程中随时使用QreadRead()信号从QNetworkReply中读取,然后写入文件或任何需要的位置。
在这里,您可以找到其他信息(特别是阅读弗兰克·奥斯特菲尔德的答案):Downloading File in Qt From URL。