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

Qt Discussion :

requête get bloquante


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 30
    Par défaut requête get bloquante
    Bonjour,
    j'ai une application qui s'initialise à partir d'un fichier situé sur le net, alors je veux rendre la requête get que j'utilise pour télécharger ce fichier bloquante.
    est ce que quelqu'un a une idée comment je peux faire ça?
    merci
    ps: j'utilise la classe QNetworkAccessManager.

  2. #2
    Membre expérimenté Avatar de cayou66
    Inscrit en
    Décembre 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Décembre 2008
    Messages : 286
    Par défaut
    Salut,

    Tu peux malgré tout créer ton slot qui éxécutera la suite de ton code de traitement, et le connecter à ce fameux signal de fin de requête GET. Regardes la doc pour retrouver le signal.

  3. #3
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    Salut,

    L'idée de bloquer l'application ne me paraît quand même pas idéale. D'autant plus, qu'il me semble que les versions précédentes des QTcpSocket utilisent le boucle d'événements (QEventLoop) pour fonctionner (à vérifier que c'est toujours le cas). Si tu bloques le thread principal pour attendre l'événement, tu vas également bloquer l'event loop et donc ne jamais recevoir de notification comme quoi ton GET s'est terminé.

    Pourquoi ne pas plutôt afficher une boite de dialogue modale le temps de récupérer le fichier ?

    Ca te donnera l'assurance que l'utilisateur ne pourra pas intéragir avec l'interface tant que ton GET n'est pas terminé et ça évitera le freeze de ton application (jamais bien perçue par l'utilisateur final).

  4. #4
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 30
    Par défaut
    Citation Envoyé par nouknouk Voir le message

    L'idée de bloquer l'application ne me paraît quand même pas idéale... ça évitera le freeze de ton application (jamais bien perçue par l'utilisateur final).
    c vrai, mais, j'aurais besoin d'attendre d'autre signaux au cours de l'exécution de mon application, donc je suis obligé de la bloquer!

    ->cayou66
    Merci le lien m'a été très utile.

  5. #5
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    Citation Envoyé par hodhodeni Voir le message
    je suis obligé de la bloquer
    Non, tu peux toujours implémenter un petit objet qui écoute plusieurs signaux et qui pourra retourner un état (genre un booléen everythingLoaded = true ou false), voir émettre un signal quand tous les signaux voulus auront été reçus.

    Après tout dépend de tes signaux, de ce que tu attends et des besoins de ton appli, mais on peut toujours trouver une solution pour ne pas bloquer le thread prinicpal de l'appli.

  6. #6
    Membre expérimenté Avatar de cayou66
    Inscrit en
    Décembre 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Décembre 2008
    Messages : 286
    Par défaut
    Tu peux toujours lancer ton get, et faire le reste de ton programme dans un slot relié à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void QNetworkAccessManager::finished ( QNetworkReply * reply )   [signal]
    non?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Prototype] Prototype Window gestion des requêtes GET et POST
    Par frankeedia@mac.com dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 20/06/2007, 17h32
  2. Requête SQL bloquante
    Par kirato dans le forum Requêtes
    Réponses: 2
    Dernier message: 03/01/2007, 14h10
  3. Réémission requête GET sur serveur Apache
    Par aquafiestas dans le forum Réseau
    Réponses: 18
    Dernier message: 04/10/2006, 14h28
  4. Requête GET ou POST sans formulaire.
    Par etiennegaloup dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 31/10/2005, 09h58
  5. [HTTP] Requête Get et récupération de la réponse
    Par tck-lt dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 07/06/2005, 14h55

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