Originariamente inviata da
MItaly
Puoi disabilitare l'interfaccia mentre è in corso la richiesta (e magari impostare il cursore alla clessidra).
ciao!
alla fine seguendo diversi tutorial ho fatto questo:
codice:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
wsUrl = "http://www.hardstyleitalia.com/blog/api/get_posts/";
progressDialog = new QProgressDialog(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_btnService_clicked()
{
progressDialog->setVisible(true);
manager = new QNetworkAccessManager(this);
url = wsUrl;
progressDialog->setWindowTitle(tr("Loading..."));
//progressDialog->setLabelText(tr("Downloading %1.").arg("TEST"));
startRequest(url);
}
void MainWindow::httpReadyRead()
{
qDebug() << reply->readAll();
}
void MainWindow::startRequest(QUrl url)
{
reply = manager->get(QNetworkRequest(url));
connect(reply, SIGNAL(readyRead()), this, SLOT(httpReadyRead()));
connect(reply, SIGNAL(downloadProgress(qint64, qint64)), this, SLOT(updateProgress(qint64, qint64)));
connect(reply, SIGNAL(finished()), this, SLOT(httpDownloadFinished()));
}
void MainWindow::httpDownloadFinished()
{
progressDialog->hide();
reply->deleteLater();
reply->close();
manager = 0;
}
void MainWindow::updateProgress(qint64 bytesRead, qint64 totalBytes)
{
progressDialog->setMaximum(totalBytes);
progressDialog->setValue(bytesRead);
}
funziona abbastanza bene, a parte la progress dialog.
nel senso che si avvia e si chiude.
ma passa dallo 0 al 100% tutto insieme.
quindi in sostanza non c'è un "progress".
da cosa potrebbe dipendere??