Вопрос по архитектуре в Qt прилаге: Я хочу получить данные

с веб сервиса и отобразить их в гуе.
Видимо, у меня будет WebServiceClient класс, который содержит QNetworkAccessManager и отправляет GET запросы.

Интересует, как лучше всего организовать интерфейс WebServiceClient?
Я бы хотел, чтобы у WebServiceClient был метод
??? getFooData(Params params);
Этот метод будет звать get метод у менеджера и подписываться на finished у QNetworkReply. В слоте сигнала finished будет парсинг реплая, конструирование из него FooData. И вот тут я пока не сообразил...

Как FooData в итоге должны быть переданы в гуйовый код? Какой тип возврата должен быть у getFooData? Я вижу вариант с передачей колбека в getFooData, как в boost.asio. Но хотелось бы понять как принято в Qt делать? Возвращать некий объект WebServiceResponse у которого тоже будет сигнал finished, который уже будет содержать конечные FooData?

1 ответов

9 просмотров

В виду того, что QNetworkAccessManager асинхронен, то можешь возвращать что-то вроде "промиса" (терминология JS) из функции запроса. Пример https://gist.github.com/anatoly-spb/f9802dc4d1eef051327ab1c75291441f#file-serviceexecutor-cpp-L84

Похожие вопросы

Обсуждают сегодня

Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Ребят, привет. У кого-то есть опыт заказа мерча в сторе? Есть успешные кейсы? Чёт у меня турецкую карту не принимает
Vladimir F.
7
Всем привет. Есть кто разбирается в платежках? Что б принимать из других стран и выплачивать рф снг
Musa
6
Портфолио: Зовут меня Александр, мне 41 год. Город Киров. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github.co...
Magic
11
Приветствую всех, есть вопросик. Передали проект на OctoberCms, без инсталяшки в полуразвернутом виде, нужно было залить бекап бд, после залития бд, оказалось, что части строк...
Лео
14
где собака, админ группы? нычкуется и боится проявить волю, в толерантность еще не наигрался? @yelizariev
Ognezar
61
Есть магистры regex в чате? Задача: нужно написать regex который мэтчит полные (без сокращений по типу ::1/128) ipv6 адреса кроме 2001:0df7:cef7:29f7:52f7:adf7:2cf7:4ff7, при ...
Илья
5
Подскажите, пожалуйста, где в backende, или не в нем можно дату поправить? Логирует действия не в том часовом поясе
Лео
7
всем привет. я правильно понимаю, что в телеграфе 4, если сессию указать у сообщения с коллбеком (кликнул на кнопку и установил сессию), то она не сохраняется?
Тимур
1
А как получить доступ к отправленному сообщению в ChosenInlineResult? Раньше кажется можно было, щас убрали?
net
2
Карта сайта