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 :

Bordure d'un QPushButton avec un dégradé


Sujet :

Qt

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Bordure d'un QPushButton avec un dégradé
    Bonjour à tous,

    J'ai un petit soucis que je n'arrive pas à résoudre en appliquant un style de bordure à un bouton.
    Voila le CSS appliqué à mon bouton, le but étant d'avoir une bordure dégradé de gauche à droite du bleu vers le rouge :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    background:
    	white /*qlineargradient(x1:0, y1:0, x2:1, y2:0, stop: 0 red, stop: 1 blue)*/;
    border-radius:
    	30px;
    border-style:
    	solid;
    border-width:
    	10px;
    border-color: 
    	qlineargradient(x1:0, y1:0, x2:1, y2:0, stop: 0 blue, stop: 1 red)
    	red
    	qlineargradient(x1:0, y1:0, x2:1, y2:0, stop: 0 blue, stop: 1 red)
    	blue;
    Et voila le résultat obtenu, pas très propre comme vous pouvez le remarquer

    Nom : border_degueu.png
Affichages : 481
Taille : 4,7 Ko

    Quelqu'un aurait-il une solution?

  2. #2
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 630
    Points : 30 699
    Points
    30 699
    Par défaut
    Salut,

    En fait, ton principal problème vient du fait que la bordure n'est pas un "tout unique". En gros, une bordure comme celle-ci est composée de quatre (et peut être même de huit) éléments distincts :
    • la ligne horizontale du dessus
    • la ligne verticale de droite
    • la ligne horizontale du bas
    • la ligne verticale de gauche
    (pas forcément dans cet ordre là, d'ailleurs) et, comme je ne suis pas sur de mon coup, peut être aussi
    Si tu observes correctement ton dessin, tu te rendra compte que chacune de ces partie prend... l'intégralité du dégradé que tu essaye de définir.

    Pour autant que ce soit possible (cela fait une éternité que je n'ai plus joué avec les CSS), ce que tu devrais faire, c'est donc définir la "portion de dégradé" qui doit être appliquée sur ces quatre partie, de telle manière que la fin de l'une puisse se "raccorder" correctement avec le début de l'autre.

    Par exemple, tu commencerais avec la ligne verticale de gauche, de "plein bleu" en bas à une valeur proche de la moitié du dégradé en haut, puis tu contiuerais sur la ligne du haut de cette position dans le dégradé vers le plein rouge (qui atteindrait donc le coin supérieur droit), avant de faire "la moitié" du dégradé du rouge vers le bleu pour la ligne verticale de droite et de terminer avec la dernière moitié du dégradé (celle te ramenant au bleu) pour la ligne horizontale inférieure et ainsi rejoindre la couleur que l'on trouve dans le coin en bas à gauche.

    Maintenant, je ne donne aucune garantie quant au fait que ce soit possible, mais, l'un dans l'autre, si tu as des attributs comme border-color, il se peut que tu aies aussi des attributs comme border-left-color, border-right-color, border-top-color et border-bottom-color, qui te permettent de définir à chaque fois "un coté" du bord

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Citation Envoyé par koala01 Voir le message
    Maintenant, je ne donne aucune garantie quant au fait que ce soit possible, mais, l'un dans l'autre, si tu as des attributs comme border-color, il se peut que tu aies aussi des attributs comme border-left-color, border-right-color, border-top-color et border-bottom-color, qui te permettent de définir à chaque fois "un coté" du bord
    C'est très exactement ce que fait le code de aRaMinet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    border-color: 
    /* top    */	qlineargradient(x1:0, y1:0, x2:1, y2:0, stop: 0 blue, stop: 1 red)
    /* right  */	red
    /* bottom */	qlineargradient(x1:0, y1:0, x2:1, y2:0, stop: 0 blue, stop: 1 red)
    /* left   */	blue;
    Malheureusement, ce n'est apparemment pas aussi simple : le border-top-color à lui seul donne

    Nom : border-top-color.png
Affichages : 397
Taille : 2,2 Ko

    L'application de l'image en attaché avec le CSS border-image: url(":/images/gradient") 6; me donne le rendu suivant :

    Nom : bouton.png
Affichages : 452
Taille : 6,1 Ko

    Ça fait un peu bricolage par rapport au CSS d'origine, mais j'ai pas trouvé mieux.
    Images attachées Images attachées  

Discussions similaires

  1. Button avec couleur dégradé
    Par Dine_Med dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 24/03/2009, 11h55
  2. Afficher une image avec un dégradé depuis un point
    Par abir2007gallas dans le forum Images
    Réponses: 2
    Dernier message: 23/04/2008, 13h18
  3. Masquer par transparence avec un dégradé :]
    Par tixweb dans le forum Flash
    Réponses: 2
    Dernier message: 08/04/2007, 12h26
  4. Probleme d'affiche des bordures d'un tableau avec DOCTYPE
    Par TangoZoulou dans le forum Mise en page CSS
    Réponses: 11
    Dernier message: 02/02/2007, 13h38
  5. [C#] Colorier la bordure d'un TabPage avec OnDrawItem
    Par Nullos Oracle dans le forum Windows Forms
    Réponses: 3
    Dernier message: 25/08/2006, 18h55

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