Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Hellrider от Апрель 30, 2013, 14:57



Название: Использование нескольких QNetworkReply
Отправлено: 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


Название: Re: Использование нескольких QNetworkReply
Отправлено: mutineer от Апрель 30, 2013, 15:48
В момент коннекта все эти указатели на реплаи указывают на какой-нить корректный объект? или чем они инициализированы?


Название: Re: Использование нескольких QNetworkReply
Отправлено: Hellrider от Апрель 30, 2013, 16:13
В момент коннекта все эти указатели на реплаи указывают на какой-нить корректный объект? или чем они инициализированы?

Не указывают и не инициализированы. А как их приготовить? Я думал они инициализируются в момент типа reply1 = networkAccessManager1.get(request);,  и тогда срабатывает сигнал. Если их нужно сначала как то инициализировать, то чем? Например у меня идет вызов reply в слоте, который сам себя вызывает по сигналу от reply из слота.


Название: Re: Использование нескольких QNetworkReply
Отправлено: mutineer от Апрель 30, 2013, 16:25
connect привязывается не к имени указателя, а к конкретному объекту, на которую указывает указатель. Если у тебя указатель ничем не инициализирован, то connect пытается привязаться к какому-то мусору и падает


Название: Re: Использование нескольких QNetworkReply
Отправлено: Hellrider от Апрель 30, 2013, 16:39
connect привязывается не к имени указателя, а к конкретному объекту, на которую указывает указатель. Если у тебя указатель ничем не инициализирован, то connect пытается привязаться к какому-то мусору и падает

Вот только не пойму, чем их инициализировать в начале - до того как будет происходить reply1 = networkAccessManager1.get(request);


Название: Re: Использование нескольких QNetworkReply
Отправлено: mutineer от Апрель 30, 2013, 16:40
Нулем. Выполняй коннект тогда, когда получишь нужный объект QNetworkReply, то бишь после get


Название: Re: Использование нескольких QNetworkReply
Отправлено: Hellrider от Апрель 30, 2013, 16:44
Нулем. Выполняй коннект тогда, когда получишь нужный объект QNetworkReply, то бишь после get

Спасибо. Буду разбираться