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 :

QProgressDialog qui ne s'affiche pas


Sujet :

Qt

  1. #1
    Membre confirmé
    Avatar de deletme
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2011
    Messages : 257
    Points : 519
    Points
    519
    Par défaut QProgressDialog qui ne s'affiche pas
    Bonjour à toutes et à tous,

    J'ai un petit soucis que je ne parviens pas à résoudre. J'essaye d'afficher une QprogressDialog le temps de copier des fichiers vers une clé USB.
    La copie se passe bien mais je n'ai aucune fenêtre qui s'affiche. Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    QProgressDialog progress("Copying files...", "Abort Copy", 0, nbOfFiles, this);
                    progress.setWindowModality(Qt::WindowModal);
     
                       for (int i = 0; i < nbOfFiles; i++) {
                           QApplication::processEvents();
                           progress.setValue(i);
     
                           examCtrller->transferToUSB(list.at(i), usbkeyList.at(usbPosition));
     
                           if (progress.wasCanceled())
                               break;
     
                       }
                       progress.setValue(nbOfFiles);
    Ce code se trouve dans un slot qui est appelé lors d'un appui sur un bouton. La fonction est implémentée dans la MainWindow.cpp.

    En essayant comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
                   QProgressDialog progress("Copying files...", "Abort Copy", 0, 100000, this);
                    progress.setWindowModality(Qt::WindowModal);
     
                       for (int i = 0; i < 100000; i++) {
                           QApplication::processEvents();
                           progress.setValue(i);
     
                           //examCtrller->transferToUSB(list.at(i), usbkeyList.at(usbPosition));
     
                           if (progress.wasCanceled())
                               break;
     
                       }
                       progress.setValue(100000);
    J'ai bien une fenêtre qui s'affiche et dont la progression est bien mise à jour.

    A moins que la copie de fichiers ne soit trop rapide ...
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."
    - Martin Golding
    Traduction obligatoire : "Toujours écrire du code en gardant en tête que le mec qui en assurera la maintenance est un psychopathe violent qui connait votre adresse"

  2. #2
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 696
    Points : 2 438
    Points
    2 438
    Par défaut
    Bonjour.

    De mémoire, QProcessDialog hérite de QDialog, lui même héritant de QWidget.
    Construire l'objet ne l'affichera pas. Il faut appeler explicitement QWidget::show() pour un affichage non modal, ou QWidget::exec() pour un affichage modal.
    Je fais appel aux esprits de Ritchie, Kernighan, Stroustrup et Alexandrescu
    Donnez moi la force, donnez moi le courage de coder proprement !

    « Ça marche pas » n'est PAS une réponse convenable, merci de détailler le souci en fournissant l’environnement, le code source, les commandes et les messages d'erreur.

    Ce club possède également un clavardage, on y trouve quelques perles entre deux sessions d'entraides.

  3. #3
    Membre confirmé
    Avatar de deletme
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2011
    Messages : 257
    Points : 519
    Points
    519
    Par défaut
    Salut,

    Le problème venait effectivement du fait que le transfert était plus rapide que l'affichage de la fenêtre ...
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."
    - Martin Golding
    Traduction obligatoire : "Toujours écrire du code en gardant en tête que le mec qui en assurera la maintenance est un psychopathe violent qui connait votre adresse"

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

Discussions similaires

  1. [HTML]Image qui ne s'affiche pas sous firefox...
    Par OrangeBud dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 13/10/2004, 13h42
  2. pages qui ne s'affichent pas
    Par luck dans le forum ASP
    Réponses: 4
    Dernier message: 19/07/2004, 11h35
  3. [Applet] BorderLayout qui ne s'affiche pas
    Par Invité(e) dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 29/04/2004, 11h39
  4. [debutant][Tomcat]Images qui ne s'affichent pas
    Par omega dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 07/04/2004, 09h44
  5. [MFC] Ces fenêtres qui ne s'affichent pas..
    Par Davide dans le forum MFC
    Réponses: 3
    Dernier message: 19/11/2003, 11h30

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