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

Discussion :

Qt est trop rapide ?

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    fdghg
    Inscrit en
    Avril 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : fdghg
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 66
    Par défaut Qt est trop rapide ?
    Hello, je souhaite faire une vérification sur un fichier sur internet

    Donc je fais comme ça

    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
    void FenPrincipale::miseAJour()
    {
        m_actionMiseAJour->setDisabled(1);
        const QNetworkRequest requete(QUrl("peuimporteladresse.fr/version"));
        QNetworkAccessManager acces;
        QNetworkReply *r = acces.get(requete);
        connect(r, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(messageErreur(QNetworkReply::NetworkError)));
        connect(r, SIGNAL(finished()), this, SLOT(reponseMaj()));
        //QMessageBox::about(this, "test", "test");
    }
     
    void FenPrincipale::messageErreur()
    {
        QMessageBox::about(this, "test", "Erreur");
    }
     
    void FenPrincipale::reponseMaj()
    {
        m_actionMiseAJour->setDisabled(0);
        QMessageBox::about(this, "test", "Fini");
    }
    Donc avec ce code, il ne se passe rien
    par contre, si j'affiche le QMessageBox. Alors il m'affiche bien fini, et me réactive le bouton avec m_actionMiseAJour->setDisabled(0);

    Donc je me demande pourquoi la messageBox change le fonctionnement..?

    Edit : j'ai passé le QNetworkAccessManager en alloc dynamique et ça marche, mais je ne sais pas pourquoi..
    Si quelqu'un à une explication

  2. #2
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 539
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 539
    Par défaut
    Salut je ne connais pas Qt mais le code ne semble pas bon !
    Si tu veux te connecter sur Internet et pour tout ce qui est problèmatique réseau il faut obligatoirement créer un thread qui interroge le serveur à intervalles réguliers.
    Si tu reçois des codes de retour corrects alors tu peux finir le thread.
    Sinon tu ne seras jamais synchro.
    Parce que ce qu'il se passe c'est que le programme Qt qui tourne sur ta machine donc client lui il exécute les instructions bêtement et ne tient aucunement compte de la latence du réseau.
    Les instructions de ta méthode MiseAJour vont s'exécuter mettons sur un 5000ième de millisecondes alors que si tu fais un ping sur ton serveur internet c'est sans doute plus de 10millisecondes.
    Donc ta fonction MiseAJour sera exécutée mais côté serveur le traitement sera toujours en cours

  3. #3
    Membre actif
    Homme Profil pro
    fdghg
    Inscrit en
    Avril 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : fdghg
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 66
    Par défaut
    Oui en effet, avec mon allocation dynamique, je n'ai plus de problème

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

Discussions similaires

  1. MaBase_Log.ldf est trop volumineux
    Par Fractal Blue dans le forum MS SQL Server
    Réponses: 14
    Dernier message: 15/01/2009, 20h17
  2. Le JPanel est trop reduit pour mon interface !
    Par LeNeutrino dans le forum JBuilder
    Réponses: 4
    Dernier message: 25/07/2005, 18h58
  3. Compte à rebours trop rapide
    Par Anduriel dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/06/2005, 20h57
  4. message d'erreur : "le fichier verrou est trop importan
    Par lol_adele dans le forum Bases de données
    Réponses: 4
    Dernier message: 10/06/2004, 07h58

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