qt进度条工作不正常

qt progress bar is not working properly

本文关键字:工作 不正常 qt      更新时间:2023-10-16

我有一个问题。。我正在对php脚本进行后期请求。我正在以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()一起工作了

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