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 :

Comment rafraîchir le texte d'un label

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 77
    Par défaut Comment rafraîchir le texte d'un label
    Bonjour à tous,

    j'ai un petit problème de rafraichissement d'un text dans un label.
    Le procédé est le suivant :
    j'appui sur un bouton de mon IHM, dans la fonction associée à ce bouton, je mets un text dans ce fameux label, puis on lance une fonction qui dure entre 3 à 4s, puis je remets un nouveau text dans ce label.
    Le résultat est qu'une fois appuyé sur le bouton, rien ne s'affiche jusqu'à ce que la fonction se termine pour m'afficher le deuxième texte.

    J'ai essayé d'utiliser :
    ou
    ou
    voir même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QTimer::singleShot(0, ui->label, SLOT(repaint()));
    mais rien ne marche

    quelqu'un aurait une solution ?

    merci

  2. #2
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Bonjour

    setText() met à jour le texte d'un label

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 77
    Par défaut
    oui c'est ce que je veux, mais il ne rafraichie pas tant qu'il n'est pas sorti de la fonction

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 77
    Par défaut
    autant pour moi, j'ai oublié de dire que j'utilise un setText

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2010
    Messages
    199
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 199
    Par défaut
    La mise à jour de l'affichage se fait via la boucle d'événements.

    Tant que tu n'es pas sorti de ta fonction, la boucle d'événements n'est pas utilisée, et donc le texte ne sera pas réellement mis à jour.

    Tu as plusieurs solutions:

    Dans des cas bien particuliers (ex: afficher une progression), tu peux utiliser QCoreApplication::processEvents() qui va déclencher un "déroulement" immédiat de la boucle d'événements.

    Attention cependant: si, dans la boucle d'événements il y a un événement qui peut détruire l'objet courant, tu pourras avoir un crash, vu qu'en sortant du processEvents, le code continuera dans un objet détruit. Donc à utiliser en faisant attention.

    L'autre solution, c'est peut-être de passer par des threads: ton opération qui prend du temps tournera dans son thread, émettra des signaux sur son état d'avancement, qui seront connectés au thread graphique pour la mise à jour.

    Entre les 2, tu peux peut-être couper ton opération en petit morceau, et synchroniser à coups de signaux / slots, avec des QueuedConnections.

    Pas de solution miracle (ça reste du C++ !), mais plusieurs façons de faire, à toi de voir celle qui te convient le mieux.

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 77
    Par défaut
    merci pour ta réponse, je vais étudier celle qui sera le mieux pour mon cas.
    merci encore

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

Discussions similaires

  1. comment afficher en arabe dans un label text
    Par lucastof dans le forum MATLAB
    Réponses: 1
    Dernier message: 29/05/2011, 02h26
  2. comment rafraîchir données (fichier texte)
    Par nawal59 dans le forum Débuter
    Réponses: 2
    Dernier message: 29/07/2008, 11h48
  3. [GTK] Comment faire défiler du texte dans un label ou autre container
    Par dupuyyann dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 24/02/2008, 23h25
  4. Réponses: 2
    Dernier message: 13/12/2006, 15h10
  5. [Rave5] Comment envoyer un text ver un label
    Par pacs dans le forum Rave
    Réponses: 2
    Dernier message: 03/03/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