0
QNetworkAccessManager를 사용하여 HTTP POST를 통해 파일 세트를 업로드하는 QT 프로그램이 있습니다. 모든 것이 제대로 업로드되지만 uploadProgress와 진행 막대를 연결하는 데 문제가 있습니다. QNetworkAccessManager uploadProgress 및 QProgressBar
이
은 업로드 수행하는 코드이다 : 이QNetworkAccessManager *networkManager = new QNetworkAccessManager(this);
while (numNetConn > 3) {
qDebug("Waiting for the number of transfers to decrease. [%d]", numNetConn);
QTest::qWait(500);
}
QNetworkReply* reply = networkManager->post(request, multiPart);
multiPart->setParent(reply); // delete the multiPart with the reply
connect(reply, SIGNAL(finished()), this, SLOT(onGetReply()));
connect(reply, SIGNAL(uploadProgress(qint64, qint64)), SLOT(progressChanged(qint64, qint64)));
void MainWindow::progressChanged(qint64 a, qint64 b) {
if (b > 0) {
qDebug() << "Uploading " << a << "/" << b << "%" << (double)a/(double)b*100.0;
ui->progUpload->setValue((a/b)*100);
qApp->processEvents();
}
}
디버그 창 즐겁게 업로드하는 동안 진행을 많이 보여줍니다,하지만 100 %로 점프 할 때 UI 업로드의 매우 끝날 때까지 업데이트되지 않습니다 .
...
Uploading 171606016/172918683 % 99.2409
Uploading 171835392/172918683 % 99.3735
Uploading 172064768/172918683 % 99.5062
Uploading 172294144/172918683 % 99.6388
Uploading 172523520/172918683 % 99.7715
Uploading 172769280/172918683 % 99.9136
Uploading 172918683/172918683 % 100
UI를 업데이트하기 위해 progressChanged() 함수에서 누락 된 것은 무엇입니까?
정확합니다! 내가 그걸 믿을 수 없어 ... 디버그 출력에 올바르게 표시했기 때문에. 'ui-> progUpload-> setValue (((double) a/(double) b) * 100.0);도 작동합니다. 감사! –