Есть ли альтернатива loop.exec (), которая не закрывает мой интерфейс QML? - PullRequest
0 голосов
/ 08 июня 2019

Я написал код для отправки данных на HTTP-сервер и ожидания получения ответа, он работает, но мой интерфейс QML закрывается после каждого запуска кода. Кто-нибудь знает, как я могу предотвратить это?

Моя программа использует функцию exec () из QEventLoop, и это вызывает проблемы.В документации говорят, что вместо этого нужно использовать QTimer, но я не могу найти способ сделать это и получить ответ от сервера ...

QNetworkAccessManager *manager;
manager = new QNetworkAccessManager(this);
manager->setNetworkAccessible(QNetworkAccessManager::Accessible);
connect(manager, SIGNAL(finished(QNetworkReply*)), qApp, SLOT(quit()));    

NetworkRequest request;
request.setUrl(QUrl("serverURL"));
request.setHeader( QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded" );

QUrlQuery data;
data.addQueryItem("name","data");

//important part:
QNetworkReply* reply=
manager->post(request,data.toString(QUrl::FullyEncoded).toUtf8());
QEventLoop loop;
connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
loop.exec();

'' '

Этот код помещает ответ сервера в 'reply' и работает просто отлично, но он систематически разрушает мой визуальный интерфейс Qtquick, и я действительно не могу этого получить.Я буду продолжать пытаться на моей стороне, но я был бы очень признателен, если бы вы могли мне помочь.Заранее спасибо!

...