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 :

rafraichir une fenètre Qt


Sujet :

Qt

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Points : 4
    Points
    4
    Par défaut rafraichir une fenètre Qt
    Bonjour

    Je me suis fait une interface Qt mais j'aimerais pourvoir rafraichir la fenètre assez souvent. Donc connaissez vous une methode permettant de forcer le rafraichissement de la fenètre MainWindow ou d'au moins une QGraphicsView.

    Voilà

  2. #2
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Salut,

    Je suis pas sûr que la question soit bien posée.
    Pour rafraichir régulièrement, tu as juste à lancer un timer dont le signal timeout est connecté au slot update() du widget à rafraichir.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Le problème vient du faite que normalement des images devrait s'afficher, quand je clique sur le bouton pour les afficher manuellement celà fonctionne. quand je créé une boucle pour les affiché automatiquement, cela plante pendant quelque minute puis tout les images s'affiche d'un coups alors qu'elle devrait s'affiché une toute les minutes

    mais j'ai donc essayé de mette un update dans la boucle mais cela ne change rien.

  4. #4
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Ok, c'est beaucoup plus clair là
    Il faut que tu crées un timer qui expire à chaque minute donc, et que dans le slot associé tu exécutes le changement d'image.

    Ce qu'il se passe actuellement est que tu bloques la boucle d'événement, donc plus aucun événement n'est géré, aucun raffrachissement, aucune entrée utilisateur, rien.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Le rafraichissement se fait bien, le problème que je viens de rencontrer c'est sur la superposition d'image. En effet j'ai plusieurs jetons a affiché en pile, et la pile la pile la première fois que je l'affiche s'affiche très bien. Cependant je doit a moment la détruire pour la recréé avec moins de jetons, et la alors la pile s'affiche mal, des jetons sencé être en dessous se retrouve au dessus, c'est le bordel.

    les piles de jetons sont des QGraphicsGroup et les jetons des QGraphicsItem.

    J'ai éssayé avec des setFocus sur ma scène mais rien n'y fait, c'est toujours le bordel.

  6. #6
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Tu peux poster du code stp?

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    c'est du cade Python, j'utilise PyQt4 :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    class JetonsItem(QtGui.QGraphicsItemGroup) : ## voir pour un QGraphicItemGroup pt pour avvifer plusieurs QGrpahicPixmapItem à voir
        def __init__(self,joueur, argent) :
            """constructeur"""
            QtGui.QGraphicsItemGroup.__init__(self)
     
            monney={1 : QtGui.QPixmap.fromImage(QtGui.QImage('IMAGES/Jetons/Jeton1$.png')),
                    5 : QtGui.QPixmap.fromImage(QtGui.QImage('IMAGES/Jetons/Jeton5$.png')),
                    10 : QtGui.QPixmap.fromImage(QtGui.QImage('IMAGES/Jetons/Jeton10$.png')),
                    25 : QtGui.QPixmap.fromImage(QtGui.QImage('IMAGES/Jetons/Jeton25$.png')),
                    100 : QtGui.QPixmap.fromImage(QtGui.QImage('IMAGES/Jetons/Jeton100$.png'))}
     
            t=[]
            if argent>=100 :
                t.append(1)
            if argent%100>=25 :
                t.append(4)
            if (argent%100)%25>=10 :
                t.append(10)
            if ((argent%100)%25)%10>=5 :
                t.append(20)
            if (((argent%100)%25)%10)%5>=1 :
                t.argent(100)
     
            for i in t :
                x={1 : 0+30*(t.index(i)/3),
                   2 : 0-30*(t.index(i)%3),
                   3 : 0+30*(t.index(i)/3),
                   4 : 0+30*(t.index(i)/3),
                   5 : 0+30*(t.index(i)%3),
                   6 : 0+30*(t.index(i)/3),
                   7 : 0+30*t.index(i)}
     
                y={1 : 0+30*(t.index(i)%3),
                   2 : 0+30*(t.index(i)/3),
                   3 : 0-30*(t.index(i)%3),
                   4 : 0-30*(t.index(i)%3),
                   5 : 0-30*(t.index(i)/3),
                   6 : 0+30*(t.index(i)%3),
                   7 : 0}
     
                jetonsItem=[]
                while argent>=100/i :                   
                    if argent>=100/i :
                        jetonsItem.append(QtGui.QGraphicsPixmapItem())
                        jetonsItem[len(jetonsItem)-1].setPixmap(monney[100/i])
                        jetonsItem[len(jetonsItem)-1].setPos(x[joueur],y[joueur])
                        argent-=100/i
                        x[joueur]+=2
                        y[joueur]-=2
     
                for item in jetonsItem :
                    self.addToGroup(item)

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    def setJetons(self,joueur,argent, derniereRelance=0) :
     
            x={1 : 640,
               2 : 700,
               3 : 500,
               4 : 250,
               5 : 185,
               6 : 400,
               7 : 400}
     
            y={1 : 182,
               2 : 335,
               3 : 420,
               4 : 410,
               5 : 240,
               6 : 162,
               7 : 320}
     
            self.jetonsArgentGroup[joueur]=JetonsItem(joueur,argent)
            self.jetonsArgentGroup[joueur].setPos(x[joueur],y[joueur])
            self.scene.addItem(self.jetonsArgentGroup[joueur])
            self.scene.setFocusItem(self.jetonsArgentGroup[joueur])
     
            x={1 : 580,
               2 : 610,
               3 : 575,
               4 : 320,
               5 : 275,
               6 : 330,
               7 : 0}
     
            y={1 : 230,
               2 : 290,
               3 : 360,
               4 : 360,
               5 : 290,
               6 : 230,
               7 : 0}
     
            self.jetonsRelanceGroup[joueur]=JetonsItem(joueur,derniereRelance)
            self.jetonsRelanceGroup[joueur].setPos(x[joueur],y[joueur])
            self.scene.addItem(self.jetonsRelanceGroup[joueur])
            self.scene.setFocusItem(self.jetonsRelanceGroup[joueur])
            return
     
        def resetJetons(self,joueur) :
     
            try :
                self.scene.removeItem(self.jetonsArgentGroup[joueur])
                self.scene.removeItem(self.jetonsRelanceGroup[joueur])
            except KeyError : pass
     
            return
    Donc en gros dans mon code pour afficher des jetons j'appelle d'abord resetJetons qui supprime les anciens jetons puis setJetons.

    Comme je l'ai dit la première fois que j'affiche les jetons (j'appelle que setJetons) ils sont bien rangés, mais des que j'appelle resetJetons, puis setJetons il ne sont plus correctement affiché

Discussions similaires

  1. [Débutant] Rafraichir une fenêtre automatiquement sans qu'elle ait besoin du focus
    Par archipel dans le forum Windows Forms
    Réponses: 4
    Dernier message: 16/10/2012, 11h50
  2. Rafraichir une fenêtre
    Par beginner1 dans le forum WinDev
    Réponses: 7
    Dernier message: 26/08/2012, 16h40
  3. Rafraichir l'affichage d'une fenêtre
    Par gbrion dans le forum WinDev
    Réponses: 6
    Dernier message: 16/03/2007, 15h08
  4. connaitre le nom d'une fenêtre et la rafraichir
    Par allowen dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 23/01/2006, 13h12
  5. rafraichir toute une fenêtre en java
    Par nighthammer dans le forum AWT/Swing
    Réponses: 17
    Dernier message: 05/01/2006, 09h28

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