ネット経由でファイルをダウンロードすることになっているプログラムがあります。そして、ファイルが小さい(<1GB)限り、すべて問題ありません。しかし、ファイルが 1GB を超えると、次の 2 つのうちのいずれかが発生
します。a) QNetworkReply からのシグナルをダウンロード進行状況とともにスロットの 1 つに接続すると、アプリケーションが 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();
}
}