Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
RequestError имеет всего два состояния, хватило бы возвращать bool. Хотя по сути ошибок может быть значительно больше
заставлять текущий (возможно главный) поток спать в бесконечном цикле, опять же без сигналов/слотов — быдлокод, и т.д.
Я пока ничего лучшего кроме как связки с QEventLoop-ом не придумал.Стандартный случай для этого — очередь. В связке с со слотом, подписанным на finished(), конечно.
Не сказал бы «спал», скорее ожидание событияИ в это время он ничего не делает, верно? Спит в ожидании события, хорошо.
Если бы вы использовали другую библиотеку, которая работает не асинхронно, то у вас и там главный поток «спал», пока не придёт ответ.Давайте еще микроконтроллеры вспомним, ага. У нас ведь главный поток отвечает за отрисовку интерфейса пользователя, и если он спит пока идет запрос (максимум 2*n секунд) — UI не отвечает на внешние раздражители.
Давайте еще микроконтроллеры вспомним, ага. У нас ведь главный поток отвечает за отрисовку интерфейса пользователя, и если он спит пока идет запрос (максимум 2*n секунд) — UI не отвечает на внешние раздражители.
QNetworkAccessManager простой как кирпич.
loop.exec(); Фризит в том то и дело...Тут вы не правы, что не удивительно — с таким извращением встречаешься не каждый день. Очередь событий общая для потока, и если запущен хоть один QEventLoop, события обрабатываться будут нормально, потому в данном случае вызывать QApplication::processEvents() смысла нет. Я так понимаю когда мы делаем что-нибудь вроде QDialog::exec() — применяется похожий подход.
Обработка событий, на то и обработка событий, чтобы события обрабатывались…Спасибо за информацию.
Если вы сразу этого не поняли, значит не до конца понимаете как устроены события в Qt.Тут вы правы, мне еще учиться и учиться. Только вот согласно документации, работа с QNetworkAccessManager должна быть построена с использованием механизма слотов и сигналов, как и вся остальная система событий в Qt.
Насчёт msleep — я думал мы с товарищем midday рассматривали метод sendRequest.Заблудились в двух собственных методах? Печально.
Лучше заменить его на… QEventLoop.Хорошо хоть вы до конца понимаете как устроены события в Qt, и просветили нас новеллой с тремя вложенными QEventLoop в программе с тремя классами.
Заблудились в двух собственных методах? Печально.
с тремя вложенными QEventLoop в программе с тремя классами.
GET/POST запросы в Qt или обёртка над QNetworkAccessManager