IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau Discussion :

QNetworkAccessManager connecté qui ne semble pas envoyer son signal finished()


Sujet :

Réseau

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    267
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Septembre 2007
    Messages : 267
    Par défaut QNetworkAccessManager connecté qui ne semble pas envoyer son signal finished()
    Salut,

    J'ai écrit ce code et le retour terminal ne me plait pas :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    void GetRSSThread::run()
    {
     
        AppVars::urlRSSlist << "http://rss.lemonde.fr/c/205/f/3050/index.rss";
        qDebug() << "enter run thread";
        Sleep(10000);
     
        QList<QNetworkAccessManager*> netManList;
        netManList<< new QNetworkAccessManager();
     
        connect (netManList[0], SIGNAL(finished(QNetworkReply*)), this, SLOT(downloadedRSSalaune(QNetworkReply*))) ;
     
        for(int i=0;i<AppVars::urlRSSlist.size();i++){
            qDebug() << "enter for loop for i = "+QString::number(i);
            netManList[i]->get(QNetworkRequest(QUrl(AppVars::urlRSSlist[i])));
        }
     
     
    start :
        qDebug() << "enter start loop thread";
        Sleep(20000);
        emit instantNews("monde","à l'autre bout du monde","http://www.google.fr");
        Sleep(5000);
        emit instantNews("monde","à l'autre bout du monde","http://www.google.fr");
    goto start;
    }
     
     
    void GetRSSThread::downloadedRSSalaune(QNetworkReply* reply){
     
        qDebug() << reply->errorString();
        qDebug() << "fichier recu";
        QByteArray data =QByteArray(reply->readAll());
    [...]
    }

    voila ce qu'affiche le terminal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    enter run thread
    "enter for loop for i = 0"
    enter start loop thread
    enter start loop thread
    enter start loop thread
    (d'ailleur c'est bizarre qu'il y est les guillemets pour "enter for loop for i = 0")

    enfin bon, downloadedRSSalaune(QNetworkReply* reply) n'est jamais executé

    What est da problemo ?

    NB : le code source de tout l'appli est là : https://sourceforge.net/projects/directnewsfrance/
    le fichier est getrssthread.cpp

  2. #2
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    267
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Septembre 2007
    Messages : 267
    Par défaut
    D'ailleur, je ne sais pas si c'est lié mais lorsque je rajoute this :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    netManList<< new QNetworkAccessManager(this);
    j'obtiens ce message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QObject: Cannot create children for a parent that is in a different thread.
    (Parent is GetRSSThread(0x44f0f90), parent's thread is QThread(0x587668), current thread is GetRSSThread(0x44f0f90)

    et un peu plus d'nfo :
    AppVars::urlRSSlist est une QList<QString>
    la classe GetRSSThread dérive de QThread

  3. #3
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    267
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Septembre 2007
    Messages : 267
    Par défaut
    ok apparement, c'est très compliqué de passer par un thread pour faire du telechargement via QNetworkAccessManager, donc finalement je passe par ma QWidget.

    donc pas vraiment résolu parce que j'ai pris une alternative pour eviter de resoudre le probleme.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 211
    Par défaut
    Je pense que ton programme reste bloqué dans cette loop:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    start :
        qDebug() << "enter start loop thread";
        Sleep(20000);
        emit instantNews("monde","à l'autre bout du monde","http://www.google.fr");
        Sleep(5000);
        emit instantNews("monde","à l'autre bout du monde","http://www.google.fr");
    goto start;
    Supprime cette partie et vois si ca marche mieux ...
    goto est à bannir.

    PS: j'ai posé une question il y a quelque jour sur QNetworkAccessManager avec un exemple qui a marché à la fin:
    https://www.developpez.net/forums/d1...accessmanager/
    => Je pense que ca peut t'interesser

Discussions similaires

  1. strcpy_s qui ne veu pas faire son travail!
    Par magellus dans le forum Windows
    Réponses: 5
    Dernier message: 20/03/2008, 18h27
  2. connect() qui ne marche pas
    Par Nykoo dans le forum Qt
    Réponses: 3
    Dernier message: 25/01/2008, 22h11
  3. [DOM] Script qui ne semble pas fonctionner sous IE 6 et 7
    Par Oluha dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/06/2007, 16h50
  4. [PDO] et bindValue qui ne semble pas fonctionner
    Par Tommyl dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 31/10/2006, 16h12
  5. [MySQL] ORDER BY qui ne semble pas pris en compte
    Par yongblood dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 09/03/2006, 12h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo