大家好我qprogressbar有问题。我怎样才能让它顺利?我希望它从0到100%顺利进行。我使用它与回复变量,从PHP脚本读取数据并返回数据。我需要等待3-4秒才能获得我的数据,我希望进度条从0到100顺利进行,我只能立即从0到100。
这是我的代码:
void MainWindow::updateDataTransferProgress(qint64 bytesReceived, qint64 bytesTotal)
{
ui->progressBar->setMaximum(bytesTotal);
ui->progressBar->setValue(bytesReceived);
}
void MainWindow::Citanje_korisnika()
{
init();
QUrl params;
params.addQueryItem("action","Citanje_korisnika");
QByteArray data;
data.append(params.toString());
data.remove(0,1);
QNetworkRequest request;
request.setUrl(url);
request.setHeader(QNetworkRequest::ContentTypeHeader,
QVariant("application/x-www-form-urlencoded"));
reply = manager->post(request, data);
connect(reply, SIGNAL(downloadProgress(qint64, qint64)),this, SLOT(updateDataTransferProgress(qint64,qint64)));
}
如果您需要更多代码,请告诉我。
编辑2: 这是我的另一部分代码:
void MainWindow::init()
{
url = "http://127.0.0.1:8888/direkt_php_qt.php";
manager = new QNetworkAccessManager(this);
// connect(manager, SIGNAL(downloadProgress(qint64,qint64)),this,SLOT(updateDataTransferProgress(qint64,qint64)));
connect(manager, SIGNAL(finished(QNetworkReply*)),this, SLOT(replyFinished(QNetworkReply*)));
}
所以程序启动,首先它进入函数void MainWindow::Citanje_korisnika()
然后它转到void MainWindow::init()
然后void MainWindow::updateDataTransferProgress(qint64 bytesReceived, qint64 bytesTotal)
问题是。我想让这个进度条从程序的开头顺利进行,直到他将所有数据下载到我的回复变量。
现在我正在显示我的表单,然后我发现3-4秒没有发生任何事情,我看到我的进度条为0,没有任何数据填充,然后一段时间后进度条跳到100%,数据显示..所以我希望这个perios在程序从服务器加载时看到我的进度条从0到100以正常速度运行。现在我只看到空白文件,然后繁荣一切都开启了。我想让一切顺利。如果你知道我的意思。