qt进度条不能正常工作

Posted

技术标签:

【中文标题】qt进度条不能正常工作【英文标题】:qt progress bar is not working properly 【发布时间】:2012-02-01 11:47:07 【问题描述】:

我有一个问题.. 我正在向 php 脚本发出 post 请求。我正在以 xml 的形式返回结果。我怎样才能让我的 qprogressbar 工作。 我试过这个: v

oid 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::updateDataTransferProgress(qint64 bytesReceived, qint64 bytesTotal)

    ui->progressBar->setMaximum(bytesTotal + (bytesTotal * 0.25));
    ui->progressBar->setValue(bytesReceived);
    ui->progressBar->show();

但它不起作用。我收到错误: Object::connect: No such signal QNetworkAccessManager::downloadProgress(qint64,qint64)

如何使用 manager 变量或类似的东西来完成这项工作。

编辑 2: 这是例如调用 init() 的函数

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);


我尝试了您的代码,但总是意外退出程序。你能改变我调用 post 方法的函数,以便它可以与 init() 一起使用

【问题讨论】:

【参考方案1】:

donwloadProgress 是QNetworkReply 的信号。 试试这样的:

url = "http://127.0.0.1:8888/direkt_php_qt.php";
manager = new QNetworkAccessManager(this);

QNetworkReply* reply = manager->get(QNetworkRequest(url));
connect(reply, SIGNAL(downloadProgress(qint64, qint64)),this, SLOT(updateDataTransferProgress(qint64,qint64)));

【讨论】:

有人知道答案吗? 好的,我成功了。如何让它顺利进行,而不是像一秒钟从 24% 跳到 100%。

以上是关于qt进度条不能正常工作的主要内容,如果未能解决你的问题,请参考以下文章

Qt 进度条

Qt编写自定义控件13-多态进度条

MacOS 上的 Qt/Cocoa - 移除进度条动画

QT Creatot中嫉妒条是如何设计的,尤其是鼠标靠近进度条是,有段还有个取消按钮。

Qt中如何改变QProgressBar中进度条的颜色?

QT进度条动画问题