Partage
  • Partager sur Facebook
  • Partager sur Twitter

Qprogress Bar changement du min et du Max

progress bar à 3 couleurs

Sujet résolu
    18 juillet 2019 à 20:03:27

    Bonjour tout le monde, 

    je suis entrain de créer un progressBar qui change ses min et max, la seul methode que j'ai c'est d'utiliser un stylesheet et d'utiliser un qgradient qui est une méthode de bricolage de plus elle marche pas bien je me demande si quelqu'un à une idée ou à déja fait ce genre d'utilisation... on definit le range, le min et le max.

    pour mieux comprendre voici un dessin 

    setStyleSheet(QString("QProgressBar{background-color: %2; border: 2px solid %2; border-radius: 1px; margin: 0px; text-align: center;}" "Q2ProgressBar:disabled{background-color: %3; border: 2px solid %3; border-radius: 1px; margin: 0px; text-align: center;}" "QProgressBar::chunk{background-color: qlineargradient(x0: 0, x2: 1, stop : 0 %1, stop: %5 %1, stop: 0.%6 %4, stop: 1 %4); margin: 0px}" ).arg(Q2UiColorsLocator::get().getDispText().name(), Q2UiColorsLocator::get().getDispText().name(), Q2UiColorsLocator::get().getDisabled().name(), Q2UiColorsLocator::get().getDispBackground().name()) .arg(min+0.00001) // .arg(((min)+0.00002))
    • Partager sur Facebook
    • Partager sur Twitter
      19 juillet 2019 à 14:22:22

      Salut,

      Pour une QProgressBar, ce dessin ne veut rien dire. quelle est la différence entre range min et value min ? et entre range max et value max ?

      la valeur est forcément supérieure à range min, alors pourquoi la barre n'est elle pas remplie à gauche ?

      Qu'est-ce que tu essaie de représenter avec ça ?

      • Partager sur Facebook
      • Partager sur Twitter
      Dream on, Dream on, Dream until your dream comes true
        19 juillet 2019 à 17:37:20

        romantik a écrit:

        Salut,

        Pour une QProgressBar, ce dessin ne veut rien dire. quelle est la différence entre range min et value min ? et entre range max et value max ?

        la valeur est forcément supérieure à range min, alors pourquoi la barre n'est elle pas remplie à gauche ?

        Qu'est-ce que tu essaie de représenter avec ça ?

        le range c'est le début et la fin de la barre (pas de valeur) c-a-d le début et la fin de la partie noir, la valeur min et max et le debut et la fin de la partie blanche, c'est elle qui bouge, dans la class qprogressbar en faisant un setvalue (le graph partie blanche) bouge de 0 a la valeur qu'on veut.

        moi ce que je veux faire c'est aussi faire bouger la valeur min (comme un scrollbar mais ca serai plutôt un progressbar) j'espere que j'ai été clair d'ou j'ai utilisé le qgradiantline qui me permet de definir 3 couleur noir blanche noir... 



        • Partager sur Facebook
        • Partager sur Twitter
          19 juillet 2019 à 18:31:50

          Salut,

          omar123 a écrit:

          le range c'est le début et la fin de la barre (pas de valeur) c-a-d le début et la fin de la partie noir, la valeur min et max et le debut et la fin de la partie blanche, c'est elle qui bouge, dans la class qprogressbar en faisant un setvalue (le graph partie blanche) bouge de 0 a la valeur qu'on veut.

          Soit, mais une progressbar, c'est une barre qui doit, justement, représenter la progression de quelque chose (mettons: d'un processus) au fil du temps.

          Ne  crois tu pas qu'il soit donc "normal" que la progressbar nous présente la progression du processus "depuis qu'il a été lancé" et ... jusqu'à ce qu'il soit terminé.

          Si tu veux représenter une "certaine proportion" d'un ensemble fini, n'aurais tu pas plutôt intérêt à utiliser une scrollbar, dont le rôle est, justement, de représenter la partie visible d'un tout impossible à afficher d'une seule fois ?

          omar123 a écrit:

          moi ce que je veux faire c'est aussi faire bouger la valeur min (comme un scrollbar mais ca serai plutôt un progressbar) j'espere que j'ai été clair

          Très clair, merci...  Mais, du coup, la question est "pourquoi" voudrais tu faire une chose pareil.  Parce que, pour être tout à fait honnête, il n'y a ni raison ni besoin associé à cette envie.

          Et, pire encore, cette envie te mène à nier le but même d'une progressbar.

          Je ne dis pas que c'est impossible, mais je dis par contre que cela n'a -- à notre point de vue du moins-- tout simplement aucun sens! Et, tant que tu ne nous auras pas expliqué ce que tu compte obtenir et le sens que cela pourrait avoir pour toi, il n'y a aucune raison pour que nous t'incitions à perdre du temps et à te casser la tête pour rien.

          • Partager sur Facebook
          • Partager sur Twitter
          Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
            19 juillet 2019 à 20:35:09

            koala01 a écrit:

            Salut,

            omar123 a écrit:

            le range c'est le début et la fin de la barre (pas de valeur) c-a-d le début et la fin de la partie noir, la valeur min et max et le debut et la fin de la partie blanche, c'est elle qui bouge, dans la class qprogressbar en faisant un setvalue (le graph partie blanche) bouge de 0 a la valeur qu'on veut.

            Soit, mais une progressbar, c'est une barre qui doit, justement, représenter la progression de quelque chose (mettons: d'un processus) au fil du temps.

            Ne  crois tu pas qu'il soit donc "normal" que la progressbar nous présente la progression du processus "depuis qu'il a été lancé" et ... jusqu'à ce qu'il soit terminé.

            Si tu veux représenter une "certaine proportion" d'un ensemble fini, n'aurais tu pas plutôt intérêt à utiliser une scrollbar, dont le rôle est, justement, de représenter la partie visible d'un tout impossible à afficher d'une seule fois ?

            omar123 a écrit:

            moi ce que je veux faire c'est aussi faire bouger la valeur min (comme un scrollbar mais ca serai plutôt un progressbar) j'espere que j'ai été clair

            Très clair, merci...  Mais, du coup, la question est "pourquoi" voudrais tu faire une chose pareil.  Parce que, pour être tout à fait honnête, il n'y a ni raison ni besoin associé à cette envie.

            Et, pire encore, cette envie te mène à nier le but même d'une progressbar.

            Je ne dis pas que c'est impossible, mais je dis par contre que cela n'a -- à notre point de vue du moins-- tout simplement aucun sens! Et, tant que tu ne nous auras pas expliqué ce que tu compte obtenir et le sens que cela pourrait avoir pour toi, il n'y a aucune raison pour que nous t'incitions à perdre du temps et à te casser la tête pour rien.


            en faite j'ai crée une class qui hérite d'un QprogressBar et elle a certaine caractéristique  et au lieu de créer une autre classe qui heritera d'un scrollbar ce qui est un peut chiant dans mon cas (pour des raisons de mémoire dans l'embarqué)  je me suis dis que le progressbar pourra faire l'affaire vue qu'un progressbar et un scroolbar auront à peu prêt les mêmes caractéristique ca me permettra d’éviter aussi des lignes de codes pour rien .. 



            -
            Edité par omar123 19 juillet 2019 à 20:37:48

            • Partager sur Facebook
            • Partager sur Twitter
              19 juillet 2019 à 20:51:53

              omar123 a écrit:

              en faite j'ai crée une class qui hérite d'un QprogressBar et elle a certaine caractéristique

              C'est quoi cette caracteristique, il y'a peut etre un autre moyen.

              • Partager sur Facebook
              • Partager sur Twitter

              Eug

                20 juillet 2019 à 2:40:28

                Lis bien la question!!!

                Je ne te demande pas CE que tu veux, mais POURQUOI tu le veux!!!

                On dit souvent que, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.  Mais, pour qu'il y ait solution, il faut qu'il y ait une justification, autrement, ce n'est pas une solution, c'est une hypothèse!

                Ce que tu veux, merci, mais je l'ai compris dés ta  première explication.

                Ce que je veux savoir, c'est qu'elle est la raison qui justifie que tu aies besoin d'une progressbar "tronquée".

                omar123 a écrit:


                en faite j'ai crée une class qui hérite d'un QprogressBar et elle a certaine caractéristique  et au lieu de créer une autre classe qui heritera d'un scrollbar ce qui est un peut chiant dans mon cas (pour des raisons de mémoire dans l'embarqué)  je me suis dis que le progressbar

                Comme mon vénéré père dirait: il faut laisser croire les béguines, elles sont spécialistes et payées pour!

                Si tu as des problème de mémoire avec une scrollbar parce que tu es en embarqué, tu ne dois pas t'attendre à avoir moins de problèmes avec une progressbar

                omar123 a écrit:

                vue qu'un progressbar et un scroolbar auront à peu prêt les mêmes caractéristique

                Elles ont peut-être des caractéristiques très semblables, mais des usages totalement différents!  Or, l'héritage est la relation la plus forte que tu puisse trouver, dans le sens où elle permet la substituabilité au temes du LSP (Liskov Substitution Principle ou principe de substitution de Liskov).  Pour que tu puisse envisager l'héritage, il faut que tu puisse espérer transmettre une instance de ta classe dérivée à n'importe quelle fontion s'attendant à recevoir une instance de la classe de base comme paramètre.

                Si tu as besoin d'un progressbar, tu ne peux pas envisager de transmettre ... une scrollbar.  Et l'inverse est tout aussi vrai.  Alors, met toi un peu à ma place:

                • je ne sais pas pourquoi tu veux obtenir ce genre de choses
                • tu pars sur l'assertion tout à fait idiote (et non prouvée à ce jour) qu'une progressbar demande moins de mémoire pour fonctonner qu'une scrollbar
                • tu veux faire passer un chien pour un mouton
                • Et tu es incapable de me dire pourquoi tu voudrais le faire (ou, du moins, tu n'as pas encore répondu à cette question)

                En sachant tous les problèmes que cela pourrait occasionner, crois tu vraiment que ce serait un bon service à te rendre que de te laisser persister dans cette aberration?

                • Partager sur Facebook
                • Partager sur Twitter
                Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
                  20 juillet 2019 à 13:54:17

                  je ne sais pas comment je pourrai vous l'expliquer mais disant que j'ai besoin de changer la valeur min et max sans passer par un stylesheet(le QScrollBar me permettra de faire ca m'ai je dois passer constamment par un stylesheet) vous serez d'accord forcement si je vous dis que le stylesheet derrière n'est pas terrible quand on est dans l'embarqué (temps d’exécution prend un peu beaucoup de CPU surtout si on a besoin de passer constamment par un stylesheet) d'ou ma demande d'utiliser un Qprogressbar . après comme j'avais mentionner avant et vue que dans mon projet j'ai des dizaines de classes ca serai un peu dommage d'ajouter une autre si je peux utiliser une classe qui est déjà existante et d'en rajouter quelque méthode me permettant de travailler avec la même classe pour deux utilisation différente. après ma question concernait aussi la faisabilité de ce que je demande si c'est pas faisable alors je ferai autrement :) .

                  -
                  Edité par omar123 20 juillet 2019 à 13:55:07

                  • Partager sur Facebook
                  • Partager sur Twitter
                    20 juillet 2019 à 15:58:47

                    omar123 a écrit:

                    je ne sais pas comment je pourrai vous l'expliquer

                    Donc, si je comprend bien, tu veux faire quelque chose d'inutile?

                    Généralement, on se lance dans le développement d'une nouvelle fonctionnalité pour répondre à un besoin: les notions de scrollbar et de progressbar ont été développées parce qu'elles répondaient à des besoins:

                    • représenter la partie visible d'un tout plus étendu pour ce qui concerne la scrollbar et
                    • représenter l'évolution d'un processus depuis qu'il a été lancé et jusqu'à ce qu'il s'achève pour une progressbar

                    Je n'ai rien contre le fait que tu veuilles développer une nouvelle fonctionnalité, mais je te demande de m'expliquer le besoin que tu veux couvrir avec elle

                     Si tu es incapable de décrire le besoin en question, comment pourrais je croire autre chose que c'est simplement parce que ... ce besoin n'existe pas, et donc que tu essaye de résoudre un problème qui... n'existe pas.

                    Mais s'il n'y a pas de problème, pourquoi devrais tu t'emmerder à chercher une solution?

                    omar123 a écrit:

                    j'ai besoin de changer la valeur min et max

                    Je l'ai bien compris!  Je te demande POURQUOI tu souhaites changer ces valeurs min et max.  Si déjà tu expliquait ce que tu veux représenter au travers de cette progressbar modifiée, nous serions peut-être plus enclins à valider ton idée, mais, dans l'état actuel des choses, il n'y a absolument aucune raison de vouloir travailler de la sorte!

                    omar123 a écrit:

                    vous serez d'accord forcement si je vous dis que le stylesheet derrière n'est pas terrible quand on est dans l'embarqué (temps d’exécution prend un peu beaucoup de CPU surtout si on a besoin de passer constamment par un stylesheet) 

                    Oui, je suis d'accord!  Et tu crois peut-être qu'une solution personnelle qui reprend, de toutes manières, une bonne partie des possibilités d'une classe de base sera plus efficace???  Cela ne va malheureusement jamais dans ce sens là!

                    omar123 a écrit:

                    après comme j'avais mentionner avant et vue que dans mon projet j'ai des dizaines de classes

                    Pfff... attend de devoir te frotter à un projet qui en contient plusieurs milliers :-°

                    omar123 a écrit:

                    si je peux utiliser une classe qui est déjà existante et d'en rajouter quelque méthode me permettant de travailler avec la même classe pour deux utilisation différente.

                    Ne fais JAMAIS ca! C'est le meilleur moyen pour te casser la gueule!

                    Chaque variable, chaque fonction, chaque type de donnée (ou chaque classe) ne doit s'occuper que d'une et une seule chose pour pouvoir s'en occuper correctement!

                    C'est ce que l'on appelle le principe de la responsabilité unique (Single Responsability Principle en anglais, on utilise souvent l'acronyme SRP).

                    Si tu as besoins de trois notions différentes, il faut que tu crées trois classes pour les représenter, de manière à n'avoir aucun doute quant à l'usage que tu t'attend à faire de ces notions!

                    J'ai maintenant compris le pourquoi de ta demande.  Le fait est que cette demande provoquera beaucoup plus de problèmes qu'elle n'apportera de solutions. Je ne peux donc décemment pas la cautionner, et je ne veux donc pas te permettre d'aller plus loin dans ta logique qui est TOTALEMENT FAUSSE.

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
                      21 juillet 2019 à 15:50:14

                      Merci pour cette réponse très détaillé  de ta part Bon je pense que je vais abandonner l'idée d'utilisé un QprogressBar et de me contenté d'un QscrollBar en changeant les valeurs de mon scroller avec un stylesheet Merci à vous :).

                          setStyleSheet(QString("QScrollBar:horizontal{background-color: %2; border: 2px solid %2; border-radius: 1px; margin: 0px; height:15 px;}"
                                                "QScrollBar::handle:horizontal{background-color: %1 ; min-width:%3;}"
                                                "QScrollBar::add-line:horizontal {border: none; background: none;}"
                                                "QScrollBar::sub-line:horizontal {border: none; background: none;}"
                                               ).arg(BackgroundGraph, backgroundBar).arg(width));
                      par contre j'ai un soucis c'est que le scroller n'est jamais à 0 je ne comprend pas pourquoi (je vais mettre un autre sujet pour ca) 

                      -
                      Edité par omar123 22 juillet 2019 à 10:28:26

                      • Partager sur Facebook
                      • Partager sur Twitter

                      Qprogress Bar changement du min et du Max

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown