c++ - QprogressBar 在一秒内从 0 跳到 100,如何使其平滑

标签 c++ qt post progress-bar

大家好,我对 qprogressbar 有疑问。我怎样才能使它光滑?我希望它从 0 到 100% 顺利进行。我将它与 reply 变量一起使用,该变量从 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% 并显示数据..所以当程序从服务器加载时,我希望这个周期可以看到我的进度条以正常速度从 0-100 移动。现在我只看到空白文件,然后一切都开始了。我想让这一切顺利进行。如果你明白我的意思。

最佳答案

这里看起来像 bytesReceived == bytesTotal,这就是它立即从 0 跳到 100% 的原因。如果您知道 bytesTotal 的大概大小,您可以将 QNetworkReply::setReadBufferSize(qint64 size) 设置为 bytesTotal 的一部分。比至少你会进步一些。但是,正如文档中所述,这会降低您的下载速度,我认为这没有意义。

关于c++ - QprogressBar 在一秒内从 0 跳到 100,如何使其平滑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9096590/

相关文章:

python - 真的可以用 python 发布文件吗?

c++ - 外部符号的可见性和可移植性

c++ - 通过 void* 向下转型/向上转型

c++ - 具有不同参数的回调函数

c++ - 如何在 C++ 中使用临时实例的成员?

html - 使 href( anchor 标记)请求 POST 而不是 GET?

c++ - 有什么方法可以从任意点开始声子媒体对象中的流吗?

c++ - 需要一些关于如何使用 QListView 的更新示例

c++ - QT 中的 json 解析器

php - 如何使用mysql在php中使用按钮删除一行