Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие _ QNetworkAccessManager и сигнал finished(QNetworkReply*)

Автор: vankleef 22.7.2011, 14:23

Доброго времени суток, форумчане)

Необходимо написать приложение, работающее с сетью. Для этих целей решил использовать в приложении класс QNetworkAccessManager.
Для тестирования написал небольшую программку:

main.cpp

Раскрывающийся текст
#include <QtGui/QApplication>
#include "mainForm.h"

int main(int argc, char *argv[]) {
    // initialize resources, if needed
    // Q_INIT_RESOURCE(resfile);

    QApplication app(argc, argv);

    // create and show your widgets here

    mainForm *f=new mainForm;
    f->show();

    return app.exec();
}

mainForm.h
Раскрывающийся текст
#ifndef _MAINFORM_H
#define    _MAINFORM_H

#include "ui_mainForm.h"
#include <QDebug>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QUrl>

class mainForm : public QDialog {
    Q_OBJECT
public:
    mainForm();
    virtual ~mainForm();
private:
    Ui::mainForm widget;

private slots:
    void replyFinish(QNetworkReply*);
};

#endif    /* _MAINFORM_H */

mainForm.cpp
Раскрывающийся текст
#include "mainForm.h"

mainForm::mainForm() {
    widget.setupUi(this);
    widget.textEdit->setReadOnly(true);

    qDebug()<<"GO!";

    QNetworkAccessManager *pManager = new QNetworkAccessManager(this);
    connect(pManager,SIGNAL(finished(QNetworkReply*)),this,SLOT(replyFinish(QNetworkReply*)));
    pManager->get(QNetworkRequest(QUrl("http://ya.ru")));
}

mainForm::~mainForm() {
}

void mainForm::replyFinish(QNetworkReply* rep){
    qDebug()<<"DONE!";
}

Не вызывается слот replyFinish.. что я делаю не так? Оо кучу времени потратил на гугл, ничего внятного не нашел.
Qt 4.7.3 пример скатал из ассистанта, также пробовал следующай пример
Раскрывающийся текст
QNetworkRequest request;
request.setUrl(QUrl("http://qt.nokia.com"));
request.setRawHeader("User-Agent", "MyOwnBrowser 1.0");

QNetworkReply *reply = manager->get(request);
connect(reply, SIGNAL(readyRead()), this, SLOT(slotReadyRead()));
connect(reply, SIGNAL(error(QNetworkReply::NetworkError)),
         this, SLOT(slotError(QNetworkReply::NetworkError)));
connect(reply, SIGNAL(sslErrors(QList<QSslError>)),
         this, SLOT(slotSslErrors(QList<QSslError>)));

Тоже нуль результатов

Автор: RazrFalcon 22.7.2011, 17:11

У меня так же и пашет.
Про QT + = network не забыли?

Автор: Алексей1153 22.7.2011, 19:05

Цитата
Не вызывается слот replyFinish.


и ещё обрати внимание - пишутся ли в консоли какие-нибудь сообщения при назначении связи или при срабатывании сигнала

Автор: vankleef 23.7.2011, 0:01

Дико извиняюсь, на работе почему то не работало. Пришел домой-все хорошо)

Автор: Алексей1153 23.7.2011, 10:16

vankleef, скорее всего полный ребилд всё исправил бы тогда

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)