QNetworkAccessManager без готового сигнала

Я хочу запрашивать и отвечать напрямую, а не использовать connect(..,SLOT(finished()),..,SLOT())


person kien bui    schedule 17.04.2018    source источник
comment
Конечно. Помогите мне !, я хочу создать приложение с той же архитектурой 3-tires/MVC   -  person kien bui    schedule 17.04.2018
comment
ответ напрямую. Верно.   -  person kien bui    schedule 17.04.2018
comment
Верно. Пожалуйста, опубликуйте ответ, например, пример кода или документ с кодом. Спасибо!   -  person kien bui    schedule 17.04.2018


Ответы (1)


Вы можете использовать QEventLoop, чтобы приложение ожидало и могло одновременно обрабатывать другие события.

#include <QCoreApplication>
#include <QNetworkAccessManager>
#include <QNetworkReply>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QNetworkAccessManager *manager = new QNetworkAccessManager;
    QEventLoop loop;
    QObject::connect(manager, &QNetworkAccessManager::finished, &loop, &QEventLoop::quit);
    QNetworkReply *reply = manager->get(QNetworkRequest(QUrl("https://api.github.com/events")));
    loop.exec();

    qDebug()<<reply->readAll();

    delete reply;
    delete manager;

    return 0;
}
person eyllanesc    schedule 17.04.2018
comment
я сейчас проверяю - person kien bui; 17.04.2018
comment
Ок, я примерно так и представлял :) - person p-a-o-l-o; 17.04.2018