CC++Qt « Последовательное выполнение после QNetworkAccessManager
Всем привет!
Использую в своём проекте QNetworkAccessManager. После методов get и post необходимо связывать сигнал finished с слотами для обработки данных. Однако получается, что каждый раз приходиться создавать новый метод. Однако хотелось бы,чтобы я мог обрабатывать данные сразу же после выполнения строки,т.е. хотелось бы чтобы в коде:
строка _answer была бы не пустой. На данный момент приходиться создавать новый слот. Может есть какой-либо способ заставить ожидать следующую строку до тех пор, пока не выполнится определённый сигнал или что-то похожее на это?
Использую в своём проекте QNetworkAccessManager. После методов get и post необходимо связывать сигнал finished с слотами для обработки данных. Однако получается, что каждый раз приходиться создавать новый метод. Однако хотелось бы,чтобы я мог обрабатывать данные сразу же после выполнения строки,т.е. хотелось бы чтобы в коде:
_reply = pManager->post(request, data);
_answer = QString::fromUtf8(_reply->readAll());
строка _answer была бы не пустой. На данный момент приходиться создавать новый слот. Может есть какой-либо способ заставить ожидать следующую строку до тех пор, пока не выполнится определённый сигнал или что-то похожее на это?
1 ответов
Стандартного способа нет. Методы post, get, readAll являются асинхронными и работают посредством сигналов\слотов.
Но вы можете придумать обходной путь, самым простым примером может быть такой цикл:
while(_answer.isEmpty()) {
Sleep(500);
_answer = QString::fromUtf8(_reply->readAll());
}
где Sleep - функция из windows.h, ее аналог можно написать используя QThread