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 :

Personnalisation d'un QPushButton

  1. #1
    Membre du Club Avatar de tarpal
    Homme Profil pro
    Ingénieur Electronique retraité
    Inscrit en
    Février 2016
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Electronique retraité
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2016
    Messages : 70
    Points : 41
    Points
    41
    Par défaut Personnalisation d'un QPushButton
    Bonjour à tous
    Dans une fenêtre j'ai plusieurs boutons
    je veux en personnaliser un ( dans mon exemple: bouton1)
    Je veux le fond (background) de mon bouton en "vert"
    Je veux le texte de mon bouton en "rouge".
    Mes codes fonctionnent bien si on les prends séparément.
    Si je mets les deux codes ensembles cela ne fonctionne pas
    Je n'ai pas d'erreur de compilation mais ça ne marche pas !
    voici mes codes
    Main.cpp
    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
    #include <QApplication>
    #include <QWidget>
    #include <QPushButton>
     
    #include "MaFenetre.h"
     
    int main(int argc, char *argv[])
    {
        QApplication app(argc,argv);
     
        MaFenetre fenetre;
        fenetre.show();
     
        return app.exec();
    }
    fenetre.h
    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
    #ifndef MAFENETRE_H
    #define MAFENETRE_H
     
    #include <QApplication>
    #include <QWidget>
    #include <QPushButton>
     
    class MaFenetre : public QWidget
    {
    public:
        MaFenetre();
    private:
        QPushButton *m_bouton1;
        QPushButton *m_bouton2;
        QPushButton *m_bouton3;
        QPushButton *m_bouton4;
     
     
     
    };
     
    #endif // MAFENETRE_H
    fenetre.cpp
    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
    #include "MaFenetre.h"
     
    MaFenetre::MaFenetre() : QWidget()
    {
        setFixedSize(600,300);
     
        m_bouton1 = new QPushButton (" QUITER ",this);
        m_bouton1->setFont(QFont("Arial",14));
     
        // couleur du texte du bouton1 (rouge)
        m_bouton1->setStyleSheet("color:#FF0000");
     
        // couleur du fond de bouton1 (vert)
        m_bouton1->setStyleSheet("background-color:#00FF00;");
     
        // position du bouton1
        m_bouton1->move(50,50);
     
        m_bouton2 = new QPushButton (" version de Qt",this);
        m_bouton2->setFont(QFont("Ariel",14));
        m_bouton2->move(50,100);
     
        m_bouton3 = new QPushButton (" mon 3eme bouton",this);
        m_bouton3->setFont(QFont("Ariel",14));
        m_bouton3->move(50,150);
     
        m_bouton4 = new QPushButton (" mon 4eme bouton",this);
        m_bouton4->setFont(QFont("Ariel",14));
        m_bouton4->move(50,200);
     
        QObject::connect(m_bouton1,SIGNAL(clicked()),qApp,SLOT(quit()));
     
        QObject::connect(m_bouton2,SIGNAL(clicked()),qApp,SLOT(aboutQt()));
     
    }
    Quelqu'un peut-il me dire ce qui se passe ?
    Merci
    A+

  2. #2
    Membre émérite
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Points : 2 834
    Points
    2 834
    Par défaut
    En général une fonction setQuelqueChose écrase la valeur quelqueChose, c'est ce que tu fais ici. Ligne 14 tu écrases la styleSheet que tu avais mises ligne 11. Tu dois assigner ton code CSS en une fois.

  3. #3
    Membre du Club Avatar de tarpal
    Homme Profil pro
    Ingénieur Electronique retraité
    Inscrit en
    Février 2016
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Electronique retraité
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2016
    Messages : 70
    Points : 41
    Points
    41
    Par défaut
    Re
    Merci ymoreau pour ta réponse
    Effectivement j'avais remarqué que de la position de ma ligne de code changeait le résultat
    Bien sûr c'est la dernière commande qui active le résultat ( puisque la première commande est écrasée)
    Tu me dit : "Tu dois assigner ton code CSS en une fois."
    C'est quoi mon code CSS ?
    Je suppose que c'est mon code source...
    Je comprends donc que je dois faire une concaténation de mes deux commandes !
    A+

  4. #4
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 585
    Points
    188 585
    Par défaut
    Citation Envoyé par tarpal Voir le message
    C'est quoi mon code CSS ?
    Tout ce que tu passes en argument à setStyleSheet, c'est du CSS . http://doc.qt.io/qt-5/stylesheet.html
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  5. #5
    Membre du Club Avatar de tarpal
    Homme Profil pro
    Ingénieur Electronique retraité
    Inscrit en
    Février 2016
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Electronique retraité
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2016
    Messages : 70
    Points : 41
    Points
    41
    Par défaut
    Re merci dourouc05 pour ta réponse et pour ton lien.
    Décidément j'en ai à apprendre...
    Je ne ferme pas encore ce sujet car je n'ai pas fini de galérer
    A+

  6. #6
    Membre du Club Avatar de tarpal
    Homme Profil pro
    Ingénieur Electronique retraité
    Inscrit en
    Février 2016
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Electronique retraité
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2016
    Messages : 70
    Points : 41
    Points
    41
    Par défaut
    Bonjour à tous
    Je reviens d'une longue absence et je reprends mon sujet.
    ymoreau dit :
    Tu dois assigner ton code CSS en une fois.
    Je n'y arrive pas car la commande : m_bouton1->setStyleSheet("background-color:#00FF00;"); ne supporte qu'un seul argument...
    Je ne peux donc pas assigner le code en une seule fois.
    Quelqu'un a-t-il une proposition?
    Merci
    A+

  7. #7
    Membre émérite
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Points : 2 834
    Points
    2 834
    Par défaut
    Si tu n'as jamais fait de CSS la logique peut être déroutante. Il faut bien comprendre que tu n'assignes pas une propriété graphique avec setStyleSheet mais tu assignes une chaine de caractère qui est du CSS. De la même manière qu'en web tu as généralement un fichier CSS qui décrit l'intégralité des propriétés graphiques (police de caractère, couleur de texte, couleur de fond etc), ici tu fournis une chaine décrivant l'intégralité de tes propriétés CSS. La chaine sera interprétée et les différentes valeurs (police, couleur etc) seront assignées en interne par Qt.

    Le plus simple est de regarder les exemples :
    http://doc.qt.io/qt-5/stylesheet-examples.html

    Le CSS est un langage à part, un texte qui décrit ton "look".

  8. #8
    Membre du Club Avatar de tarpal
    Homme Profil pro
    Ingénieur Electronique retraité
    Inscrit en
    Février 2016
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Electronique retraité
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2016
    Messages : 70
    Points : 41
    Points
    41
    Par défaut
    ymoreau
    Un gros merci pour ton explication et ton lien...
    Je vais prendre le temps de tout étudier
    A+

  9. #9
    Membre du Club Avatar de tarpal
    Homme Profil pro
    Ingénieur Electronique retraité
    Inscrit en
    Février 2016
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Electronique retraité
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2016
    Messages : 70
    Points : 41
    Points
    41
    Par défaut
    Re
    ça y est ça marche
    Afin de partager mon expérience, voici le code qui fonctionne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     // couleur du texte du bouton1 (blanc sur fond bleu )
        m_bouton1->setStyleSheet( "color: white; background-color: blue");
    Je mets le sujet en "résolu"
    A+

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

Discussions similaires

  1. [MFC] Comment personnaliser sa police de caractères ?
    Par Guybrush113 dans le forum MFC
    Réponses: 11
    Dernier message: 26/05/2004, 07h29
  2. [langage] personnaliser le tri
    Par schnecke dans le forum Langage
    Réponses: 3
    Dernier message: 24/03/2004, 15h14
  3. Personnaliser un rapport d'erreur sous Windows XP
    Par Neilos dans le forum Windows
    Réponses: 5
    Dernier message: 21/11/2003, 18h13
  4. [FLASH MX2004] Personnaliser les scrollbars
    Par stephane eyskens dans le forum Flash
    Réponses: 10
    Dernier message: 09/10/2003, 12h53
  5. [VB6] [UserControl] Évènements personnalisés
    Par Frankywinky dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 27/05/2003, 17h56

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