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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Использование нескольких QNetworkReply  (Прочитано 2981 раз)
Hellrider
Гость
« : Апрель 30, 2013, 14:57 »

Ситуация такая. Определяю в классе несколько объектов QNetworkReply, каждый объект отвечает за вызов определенного слота, по сигналу readyRead() или finished(). При запуске программа
вываливается с исключением сразу на определении первого определения connect. Не пойму, где моя ошибка  Непонимающий Помогите кто чем может
класс
Код
C++ (Qt)
class Test : public QSystemTrayIcon
{
   Q_OBJECT
private:    
   ......
   QNetworkReply* reply_1;
   QNetworkReply* reply_2;
   QNetworkReply* reply_3;
   QNetworkReply* reply_4;
   QNetworkReply* reply_5;
   QNetworkReply* reply_6;    
............
 

слоты
Код
C++ (Qt)
connect(reply_1, SIGNAL(readyRead()), this, SLOT(slot1()));
   connect(reply_2, SIGNAL(readyRead()), this, SLOT(slot2()));
   connect(reply_3, SIGNAL(readyRead()), this, SLOT(slot3()));
   connect(reply_4, SIGNAL(readyRead()), this, SLOT(slot4()));
   connect(reply_5, SIGNAL(readyRead()), this, SLOT(slot5()));
   connect(reply_6, SIGNAL(readyRead()), this, SLOT(slot6()));
 

Вызов делается типа reply1 = networkAccessManager1.get(request);

Отладчик показывает  const QMetaObject *smeta = sender->metaObject();
ошибка: Exception at 0x77dae6c6, code: 0xc0000005: read access violation at: 0x0, flags=0x0
« Последнее редактирование: Апрель 30, 2013, 15:09 от Hellrider » Записан
mutineer
Гость
« Ответ #1 : Апрель 30, 2013, 15:48 »

В момент коннекта все эти указатели на реплаи указывают на какой-нить корректный объект? или чем они инициализированы?
Записан
Hellrider
Гость
« Ответ #2 : Апрель 30, 2013, 16:13 »

В момент коннекта все эти указатели на реплаи указывают на какой-нить корректный объект? или чем они инициализированы?

Не указывают и не инициализированы. А как их приготовить? Я думал они инициализируются в момент типа reply1 = networkAccessManager1.get(request);,  и тогда срабатывает сигнал. Если их нужно сначала как то инициализировать, то чем? Например у меня идет вызов reply в слоте, который сам себя вызывает по сигналу от reply из слота.
« Последнее редактирование: Апрель 30, 2013, 16:15 от Hellrider » Записан
mutineer
Гость
« Ответ #3 : Апрель 30, 2013, 16:25 »

connect привязывается не к имени указателя, а к конкретному объекту, на которую указывает указатель. Если у тебя указатель ничем не инициализирован, то connect пытается привязаться к какому-то мусору и падает
Записан
Hellrider
Гость
« Ответ #4 : Апрель 30, 2013, 16:39 »

connect привязывается не к имени указателя, а к конкретному объекту, на которую указывает указатель. Если у тебя указатель ничем не инициализирован, то connect пытается привязаться к какому-то мусору и падает

Вот только не пойму, чем их инициализировать в начале - до того как будет происходить reply1 = networkAccessManager1.get(request);
Записан
mutineer
Гость
« Ответ #5 : Апрель 30, 2013, 16:40 »

Нулем. Выполняй коннект тогда, когда получишь нужный объект QNetworkReply, то бишь после get
Записан
Hellrider
Гость
« Ответ #6 : Апрель 30, 2013, 16:44 »

Нулем. Выполняй коннект тогда, когда получишь нужный объект QNetworkReply, то бишь после get

Спасибо. Буду разбираться
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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