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 :

bug progressbar


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 47
    Par défaut bug progressbar
    Bonsoir a tous ^^, voila un petit problème qui me perturbe un petit peu

    j'ai fais une barre de progression qui me donne l'avancement d'un telechargment d'un transfère Ftp, tout fonctionne a merveille, sauf la progressbar qui reste blanche/grise, le connecteur lui fonctionne bien pourtant
    voici le petit bout de code qui gère la progressBar :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void MainWindows::Progress(qint64 done, qint64 total)
    {
    	this->myProgress->setMaximum(total);
    	this->myProgress->setValue(done);
    }
    je vous remercie d'avance et bonne journée a vous

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Par défaut
    ça ressemble à un problème de freeze de l'ihm lors du transfert de fichier, donc soit tu crées 2 threads différents (un pour l'ihm l'autre pour les traitements / transferts)
    soit tu rajoutes l'appel suivant QCoreApplication::processEvents() après l'appel de ta fonction Progress() , les performances sont moins bonnes dans ce cas

  3. #3
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Salut
    Tu fait comment pour telecharger tes fichier par FTP?

  4. #4
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 47
    Par défaut
    Citation Envoyé par yan Voir le message
    Salut
    Tu fait comment pour telecharger tes fichier par FTP?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    if ( temp->open(QIODevice::WriteOnly) ) {
     
    				this->Ftp->get(QString::number(myBuild)+"/Patch.exe", temp);
     
    				connect(Ftp, SIGNAL(dataTransferProgress(qint64, qint64)), this, SLOT(Progress(qint64, qint64)));
    				connect(Ftp,SIGNAL(commandFinished(int, bool)), this, SLOT(FindeTelechargement(int, bool)));
     
     
     
    				}else
    				{
    					this->DownloadFrames->hide();
    					mMessage.ErrorMsg("Erreur d'écriture", "Erreur impossible d'ouvrir le fichier"+folder+"en écriture");
    				}
    voici a peu près la partie qui concerne le téléchargement en lui même

  5. #5
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Tu n'aurais pas fait une boucle d'attente par hasard?

  6. #6
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 47
    Par défaut
    Citation Envoyé par yan Voir le message
    Tu n'aurais pas fait une boucle d'attente par hasard?
    une boucle d'attente ? c'est à dire ?

  7. #7
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Je ne pense pas parce que si son slot est correctement connecté au sigal, la progressbar va se mettre à jour (c'est synchone).

    ---

    Si tu fais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void MainWindows::Progress(qint64 done, qint64 total)
    {
    	this->myProgress->setMaximum(2);
    	this->myProgress->setValue(1);
    }
    ça donne quoi ?

    Note qu'il y a perte de donnée lors d'un cast qint64 -> int (QProgressBar ne supporte pas les qint64).

  8. #8
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 47
    Par défaut
    Citation Envoyé par Aurelien.Regat-Barrel Voir le message
    Je ne pense pas parce que si son slot est correctement connecté au sigal, la progressbar va se mettre à jour (c'est synchone).

    ---

    Si tu fais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void MainWindows::Progress(qint64 done, qint64 total)
    {
    	this->myProgress->setMaximum(2);
    	this->myProgress->setValue(1);
    }
    ça donne quoi ?

    Note qu'il y a perte de donnée lors d'un cast qint64 -> int (QProgressBar ne supporte pas les qint64).
    avec le code que tu m'a donner ma progressbar est a 50% c'est bizarre

    [Edit] Ca doit être la convertion qint64 -> int qui doit merder <_<

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 164
    Par défaut
    Citation Envoyé par luffydu22 Voir le message
    avec le code que tu m'a donner ma progressbar est a 50% c'est bizarre

    [Edit] Ca doit être la convertion qint64 -> int qui doit merder <_<

    non c'est tout à fait logique, 1 est bien égal à 50% de 2 ( 2 = valeur max de ta progress bar)

    c'est donc un probleme de conversion, moi j'utilise habituellement des float qui sont automatiquement castés en int par Qt

  10. #10
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 47
    Par défaut
    j'ai trouver une solution en faisant autrement :p

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	this->myProgress->setMaximum(100);
    	this->myProgress->setValue((100 * done) /total);
    et la ca marche impeccable x)

  11. #11
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Clic sur alors

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

Discussions similaires

  1. ProgressBar bug linux
    Par Watier_53 dans le forum Flex
    Réponses: 3
    Dernier message: 05/06/2008, 11h47
  2. Loader et ProgressBar bug :_(
    Par r-aegis dans le forum ActionScript 1 & ActionScript 2
    Réponses: 3
    Dernier message: 28/08/2007, 16h53

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