с веб сервиса и отобразить их в гуе.
Видимо, у меня будет WebServiceClient класс, который содержит QNetworkAccessManager и отправляет GET запросы.
Интересует, как лучше всего организовать интерфейс WebServiceClient?
Я бы хотел, чтобы у WebServiceClient был метод
??? getFooData(Params params);
Этот метод будет звать get метод у менеджера и подписываться на finished у QNetworkReply. В слоте сигнала finished будет парсинг реплая, конструирование из него FooData. И вот тут я пока не сообразил...
Как FooData в итоге должны быть переданы в гуйовый код? Какой тип возврата должен быть у getFooData? Я вижу вариант с передачей колбека в getFooData, как в boost.asio. Но хотелось бы понять как принято в Qt делать? Возвращать некий объект WebServiceResponse у которого тоже будет сигнал finished, который уже будет содержать конечные FooData?
В виду того, что QNetworkAccessManager асинхронен, то можешь возвращать что-то вроде "промиса" (терминология JS) из функции запроса. Пример https://gist.github.com/anatoly-spb/f9802dc4d1eef051327ab1c75291441f#file-serviceexecutor-cpp-L84
Обсуждают сегодня