Russian Qt Forum
Ноябрь 22, 2024, 15:45 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как использовать единственный QNetworkAccessManager для разнотипных запросов?  (Прочитано 3936 раз)
schmidt
Гость
« : Декабрь 04, 2015, 17:02 »

Добрый день,

Можно ли использовать один QNetworkAccessManager для выполнения любых типов HTTP запросов - загрузка изображений, HTML, XML, и.т.д. - и как в этом случае отличать в слоте один ответ от другого?

Из соображений по данному вопросу нашел два подхода:
    1. Использовать QNetworkRequest::setAttribute(QNetworkRequest::Attribute). Объект запроса доступен в слоте из QNetworkReply::request().
    2. Привязываться к сигналу finished() объекта QNetworkReply, указатель на который возвращает QNetworkAccessManager::get(). Этот способ нашел в http://www.qtcentre.org/threads/54860-Multiple-requests-with-QNetworkAccessManager.

Пробовал устанавливать атрибуты запроса, но setAttribute не принимает значения из enum, определенного в другом классе, сообщая о том, что не может привести аргумент к типу QNetworkRequest::Attribute.

Цитировать
qnetworkrequest.h:131: note:   no known conversion for argument 1 from 'Agent::Attribute' to 'QNetworkRequest::Attribute'

В документации пишут

Цитировать
QNetworkRequest::User 1000

Special type. Additional information can be passed in QVariants with types ranging from User to UserMax. The default implementation of Network Access will ignore any request attributes in this range and it will not produce any attributes in this range in replies. The range is reserved for extensions of QNetworkAccessManager.

Означает ли это, что мне придется наследоваться от QNetworkAccessManager или QNetworkRequest, чтобы устанавливать свои атрибуты?
Записан
Bepec
Гость
« Ответ #1 : Декабрь 04, 2015, 19:04 »

приведите к инту. Ну или к типу енума QNAM'a. Для него это два различных типа.
Записан
schmidt
Гость
« Ответ #2 : Декабрь 07, 2015, 21:24 »

Спасибо  Улыбающийся Выходит, если enum объявлен строго типизированным - помечен тегом - с ним можно договориться только через static_cast Улыбающийся Интересно, до сих пор не замечал особой разницы между именованным enum и безымянным, буду знать )
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.048 секунд. Запросов: 20.