我有一个应该通过网络下载文件的程序。只要文件很小(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

10-02 21:31