Qt индикатор не работает должным образом - PullRequest
1 голос
/ 01 февраля 2012

У меня есть одна проблема ... Я делаю пост-запрос к 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)

Как я могу заставить эту работу работать с переменной менеджера или чем-то в этом роде.

РЕДАКТИРОВАТЬ 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 Ответ

1 голос
/ 01 февраля 2012

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