Partage
  • Partager sur Facebook
  • Partager sur Twitter

Qt : perssonaliser un pushboutton et un combobox

comment enlever le comportement par defaut

    31 août 2008 à 23:28:35

    Salut a tous !
    Comme beaucoup de Zero j'ai suivis les tutos sur le Qt , seulement maintenant que j'arrive un peu a m'en servir certains éléments m'échappent.

    Voila je voudrais faire une petite interface simpa pour le chat qt (proposé a la fin du chapitre qt) j'ai reussi a perssonaliser le fond des boutons en changeant leurs icones mais le probleme c'est que quand je clique dessus le vilain carré par defaut redevient visible :
    Image utilisateur
    (voyez lors du clique sur le bouton power le vilain carré reprend le dessus)

    Bon ça c'étais mon premier probleme ^^ mon second probleme est perssonnaliser la combobox, je n'ai pas reussi ni avec le stylesheet ni avec les icones ou autres a changer l'image par defaut or j'aimerais bien ça :
    Image utilisateur

    Wala wala , si quelqu'un connais l'une des solutions a ces problemes il serait extremement aimable de sa part de m'en informer ^^
    Merci de m'avoir lu jusqu'au bout et merci pour toute l'aide qu'apporte ce site et ses membres.
    • Partager sur Facebook
    • Partager sur Twitter
      31 août 2008 à 23:39:26

      Utilise les stylesheets. Pour ca tu doit te débrouiller un peu en css (c'est pas compliqué) et chercher dans la doc. Et du coup tu peux meme oublier de spécifier les icones par la programmation, juste faire une stylesheet générale
      edit : oops... avais pas lu la fin du post.

      Si jamais les stylesheets ne t'aident pas tu peux toujours dériver une classe style et l'assigner a ton app. Par contre c'est chiant (cherche dans les exemples y en a qui ont fait ca).

      PS : mais ca me parait bizarre... perso j'arrive avec les stylesheets a personnaliser les combobox... et les exemples aussi...
      • Partager sur Facebook
      • Partager sur Twitter
        1 septembre 2008 à 9:18:29

        J'ai pourtant essayé avec le stylesheet , c'est meme la premiere chose que j'ai essayé vu qu'a la base je suis developpeur web le css ça me mettais plus a l'aise que le reste . Mais rien n'y fait !!

        Pour le comboBox aucun style ne s'applique j'ignore pourquoi , et pour le pushbuton je ne vois pas comment regler le probleme en css , vu que lors du clique le graphisme par défaut revient automatiquement.

        Quelqu'un connais il un meilleur moyen que le stylesheet ?

        Merci pour votre aide . :)
        • Partager sur Facebook
        • Partager sur Twitter
          1 septembre 2008 à 17:12:47

          Pour le bouton tu fais une image par état:
          1 quand il est cliqué
          1 quand il est survolé
          1 quand il est normal
          1 quand il est desactivé

          Et avec les styles sheets tu applique les images. Utilise des png pour la forme.

          Pour la combobox... sans doute une technique similaire.
          • Partager sur Facebook
          • Partager sur Twitter
            2 septembre 2008 à 13:39:56

            Le probleme c'est que C n'autorise qu'une classe assignée a l'élément.

            En css on peut faire :

            .bouton{
            background-image:"monfondsimple.jpg";
            }
            .bouton:hover{
            background-image:"monfondsurvolé.jpg";
            }


            mais Avec le c++ on ne peut que specifier l'attribut :
            background-image:"monfond.jpg";
            on ne peut pas specifier les classes et donc on ne peut pas definir l'etat de survol ou autres ...

            Enfin si c'est possible je ne sais pas comment faire.
            • Partager sur Facebook
            • Partager sur Twitter
              2 septembre 2008 à 21:03:23

              Ben si tu peux le faire...
              Lit la doc des stylesheets de Qt, cela est possible.

              Pour les boutons ca donnera un truc du genre:

              QPushButton{
              background-image...
              }
              QPushButton:hover{
              background-image...
              }

              D'autant plus qu'avec les boutons il y a des subtilités il faut donc absolument que tu lise toute la doc des styles sheets Qt...
              edit : la doc est en anglais. Mais si tu est développeur web ca doit pas trop te poser de problemes a mon avis.
              • Partager sur Facebook
              • Partager sur Twitter
                4 septembre 2008 à 9:13:16

                Certe, j'ignorais qu'on pouvais faire des choses comme ça , je vais lire tout ça , merfi .

                (je me suis tapé une doc de 200 pages en allemand alors la doc de qt c'est finger in the noise :p)

                Merci beaucoup.
                • Partager sur Facebook
                • Partager sur Twitter
                  6 septembre 2008 à 13:33:33

                  Bon j'ai trouvé la réponse mais pas dans la doc ^^ , pour ceux qui auraient le meme probleme que moi , il suffit de faire

                  border-image: url(:/fondFenetre/boutonEnvoyer.png);

                  au lieu de

                  border-background: url(:/fondFenetre/boutonEnvoyer.png);

                  Pour que ça bouge plus .

                  Evidemment ce n'est peut etre pas la meilleure solution mais chez moi ça marche :p
                  • Partager sur Facebook
                  • Partager sur Twitter
                    6 septembre 2008 à 18:21:56

                    Ah oui, border-image ou background...

                    Je sais plus si ils en parlai dans la doc (mais il ne me semble pas...)

                    Sinon je suis impressioné, tu est apparement trilingue allemand/anglais/francais...
                    Pas mal
                    • Partager sur Facebook
                    • Partager sur Twitter
                      6 septembre 2008 à 18:31:01

                      Je pense que tu dois réécrire ta classe spécial bouton (dérivée de QPushButton) et que tu dois y faire un eventFilter(), là tu récupére tous les événements que tu as besoin, et tu empéche Qt de mettre son carré blanc...*

                      pareil pour la comboBox
                      • Partager sur Facebook
                      • Partager sur Twitter
                        25 septembre 2008 à 21:44:32

                        Bonjour, je voudrais savoir comment on fait pour que le compilateur sache que je veux appliquer un style css au programme car, à mon avis, il ne faut pas juste le mettre dans e dossier du programe, ce serait trop beau!!! :D

                        Faut-i faire au début des fichiers .cpp et .h
                        #include "style.css"
                        


                        ???
                        • Partager sur Facebook
                        • Partager sur Twitter

                        L'important n'est pas de savoir maîtriser une technologie à la perfection, mais d'avoir une belle capacité d'adaptation.

                          25 septembre 2008 à 21:53:42

                          Citation : yann33470

                          Bonjour, je voudrais savoir comment on fait pour que le compilateur sache que je veux appliquer un style css au programme car, à mon avis, il ne faut pas juste le mettre dans e dossier du programe, ce serait trop beau!!! :D

                          Faut-i faire au début des fichiers .cpp et .h

                          #include "style.css"
                          



                          ???


                          Tu sais une petite recherche ne fait pas de mal, de plus je ne suis pas sur que tu sache suffisamment le c++ pour déjà te mettre a Qt enfin soit.
                          Il te suffit juste d'ajouté :
                          QFile file("style/tonstyle.css");
                          file.open(QFile::ReadOnly);
                          QString styleSheet = QLatin1String(file.readAll());
                          app.setStyleSheet(styleSheet);
                          
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            25 septembre 2008 à 22:01:47

                            Citation : yann33470

                            #include "style.css"
                            
                            :lol:
                            Qu'est ce que tu veux qu'il en fasse du CSS le compilo ??
                            Quand tu veux mettre une image tu fais #include "image.png" ??

                            Sérieusement : le préprocesseur ne fait que des copier-coller bêtes et méchants sans comprendre ce qu'il fait, donc avec #include "style.css" il inclurait le css dans la source, et le compilo se dirait : "gné ??" (citation authentique :-° ).

                            Va voir la doc pour savoir comment on fait.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              25 septembre 2008 à 22:10:13

                              Info: quand j'ai dit

                              Citation : Moi

                              #include "style.css"
                              

                              Je rigolais :lol::lol::lol: !!! Je ne suis pas bête à ce point (quoi que :-° ).
                              Mais en tout cas merci pour le lien de la doc (j' ai passé des journées entières à chercher le "StyleSheet" en vain)

                              Donc merci!!! :D
                              • Partager sur Facebook
                              • Partager sur Twitter

                              L'important n'est pas de savoir maîtriser une technologie à la perfection, mais d'avoir une belle capacité d'adaptation.

                              Anonyme
                                25 septembre 2008 à 22:20:53

                                Citation : yann33470

                                Mais en tout cas merci pour le lien de la doc (j' ai passé des journées entières à chercher le "StyleSheet" en vain)

                                Le lien est sur la page principale, dans le cadre "Key Technologies", fallait pas aller bien loin :p .
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  25 septembre 2008 à 22:27:01

                                  o_Oo_Oo_Oo_Oo_Oo_Oo_Oo_O
                                  Que je suis nuuuuuuuul !!!!!!!!!!!!!!

                                  euh: Problème :
                                  QPushButton # boutonEnvoyer {
                                        background-color: red;
                                  }
                                  


                                  Ça marche pas!!! :(
                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  L'important n'est pas de savoir maîtriser une technologie à la perfection, mais d'avoir une belle capacité d'adaptation.

                                  Anonyme
                                    25 septembre 2008 à 22:31:49

                                    Citation : yann33470

                                    QPushButton # boutonEnvoyer {
                                          background-color: red;
                                    }
                                    
                                    Tu as juste appelé ton bouton "boutonEnvoyer" ou tu lui as fait m_boutonEnvoyer->setObjectName("boutonEnvoyer"); aussi ?? Dans le premier cas ça ne marche pas (une fois compilé le bouton ne sais plus comment il s'appelle), dans le second si (normalement).
                                    Aussi vérifie que le .css soit dans le dossier de l'exécutable.
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      18 octobre 2008 à 11:47:00

                                      désolé, je n'ai pas répondu mais de toute façon, je suis sur un autre logiciel tout bête (je m'ennuyais).
                                      Voici le code:
                                      /*main.cpp*/
                                      
                                      #include <QApplication>
                                      #include <QTranslator>
                                      #include <QLocale>
                                      #include <QLibraryInfo>
                                      #include <QtGui>
                                      #include "FenPrincipale.h"
                                      
                                      
                                      int main(int argc, char *argv[])
                                      {
                                          QApplication app(argc, argv);
                                      
                                          FenPrincipale fenetre;
                                      
                                          QString locale = QLocale::system().name();
                                          QTranslator translator;
                                          translator.load(QString("qt_") + locale, QLibraryInfo::location(QLibraryInfo::TranslationsPath));
                                          app.installTranslator(&translator);
                                      
                                          QFile file("style.css");
                                          file.open(QFile::ReadOnly);
                                          QString styleSheet = QLatin1String(file.readAll());
                                          app.setStyleSheet(styleSheet);
                                      
                                          fenetre.show();
                                      
                                          return app.exec();
                                      }
                                      

                                      /*FenPrincipale.cpp*/
                                      
                                      #include "FenPrincipale.h"
                                      #include "FenCodeGenere.h"
                                      
                                      FenPrincipale::FenPrincipale()
                                      {
                                      
                                      
                                          setWindowIcon(QIcon("GF.ico"));
                                      
                                          layoutPrincipal = new QVBoxLayout;
                                      
                                          titre1 = new QLabel("Titre de la fenêtre:  ");
                                          titre1->setObjectName("titre1");
                                          titre = new QLineEdit;
                                      
                                          layoutTitre = new QHBoxLayout;
                                          layoutTitre->addWidget(titre1);
                                          layoutTitre->addWidget(titre);
                                      
                                          texte1 = new QLabel("Texte de la fenêtre: ");
                                          texte = new QTextEdit;
                                      
                                          QHBoxLayout *layoutTexte = new QHBoxLayout;
                                          layoutTexte->addWidget(texte1);
                                          layoutTexte->addWidget(texte);
                                      
                                          type1 = new QLabel("Type de la fenêtre:");
                                          type = new QComboBox;
                                          type->addItem("Erreur");
                                          type->addItem("Attention");
                                          type->addItem("Information");
                                          type->addItem("Question");
                                      
                                          layoutType = new QHBoxLayout;
                                          layoutType->addWidget(type1);
                                          layoutType->addWidget(type);
                                      
                                          generer = new QPushButton("Générer la fenêtre!");
                                          generer->setObjectName("generer");
                                      
                                          code = new QPushButton("Générer le code de la fenêtre!");
                                      
                                          boutons = new QHBoxLayout;
                                          boutons->addWidget(generer);
                                          boutons->addWidget(code);
                                      
                                          layoutPrincipal->addLayout(layoutTitre);
                                          layoutPrincipal->addLayout(layoutTexte);
                                          layoutPrincipal->addLayout(layoutType);
                                          layoutPrincipal->addLayout(boutons);
                                      
                                          setLayout(layoutPrincipal);
                                      
                                          connect(generer, SIGNAL(clicked()), this, SLOT(genererFenetre()));
                                          connect(code, SIGNAL(clicked()), this, SLOT(genererCode()));
                                      }
                                      void FenPrincipale::genererFenetre()
                                      {
                                          QString titre2 = titre->text();
                                          QString texte2 = texte->toPlainText();
                                          QString type2 = type->currentText();
                                      
                                          if(type2 == "Erreur")
                                          {
                                              QMessageBox::critical(this, titre2, texte2);
                                          }
                                          else if(type2 == "Attention")
                                          {
                                              QMessageBox::warning(this, titre2, texte2);
                                          }
                                          else if(type2 == "Information")
                                          {
                                              QMessageBox::information(this, titre2, texte2);
                                          }
                                          else if(type2 == "Question")
                                          {
                                              QMessageBox::question(this, titre2, texte2, QMessageBox::Yes, QMessageBox::No);
                                          }
                                      }
                                      void FenPrincipale::genererCode()
                                      {
                                          if (titre->text().isEmpty() && texte->toPlainText().isEmpty())
                                          {
                                              QMessageBox::critical(this, "Erreur", "Veuillez entrer un titre et un texte pour la fenêtre");
                                              return; // Arrêt de la méthode
                                          }
                                      
                                          QMessageBox::information(this, "Attention", "Ce logiciel permet de générer une partie du code source nécéssaire. Vous devrez l'insérer dans un code source Qt existant. Pour plus d'informations, <a href='http://nairod.site90.net/' >cliquez ici</a>.");
                                      
                                          // Si tout va bien, on génère le code
                                          QString code2;
                                      
                                          code2 += "/*Code généré automatiquement par le Générateur de Fenêtres de l'entreprise Myax's*/\n";
                                      
                                          if(type->currentText() == "Erreur")
                                          {
                                              code2 += "QMessageBox::critical(this, \""+ titre->text() +"\", \""+ texte->toPlainText() +"\"); ";
                                          }
                                          else if(type->currentText() == "Attention")
                                          {
                                              code2 += "QMessageBox::warning(this, \""+ titre->text() +"\", \""+ texte->toPlainText() +"\"); ";
                                          }
                                          else if(type->currentText() == "Information")
                                          {
                                              code2 += "QMessageBox::information(this, \""+ titre->text() + "\", \""+ texte->toPlainText() +"\"); ";
                                          }
                                          else if(type->currentText() == "Question")
                                          {
                                              code2 += "QMessageBox::question(this,\""+ titre->text() + "\", \""+ texte->toPlainText() +"\", QMessageBox::Yes, QMessageBox::No); ";
                                          }
                                      
                                          // On crée puis affiche la fenêtre qui affichera le code généré, qu'on lui envoie en paramètre
                                          FenCodeGenere *fenetreCode = new FenCodeGenere(code2, this);
                                          fenetreCode->exec();
                                      }
                                      

                                      /*FenPrincipale.h*/
                                      
                                      #ifndef HEADER_FENPRINCIPALE
                                      #define HEADER_FENPRINCIPALE
                                      
                                      #include <QtGui>
                                      #include <QVBoxLayout>
                                      #include <QHBoxLayout>
                                      #include <QGridLayout>
                                      #include <QFile>
                                      
                                      class FenPrincipale : public QWidget
                                      {
                                      	Q_OBJECT
                                      
                                      	public:
                                      		FenPrincipale();
                                      
                                          private slots:
                                          void genererFenetre();
                                          void genererCode();
                                      
                                      	private:
                                          QVBoxLayout *layoutPrincipal;
                                      
                                          QHBoxLayout *layoutTitre;
                                          QHBoxLayout *layoutType;
                                          QHBoxLayout *layoutTitreOui;
                                          QHBoxLayout *boutons;
                                      
                                          QLabel *titre1;
                                          QLabel *texte1;
                                          QLabel *type1;
                                          QLabel *titreQuestion;
                                      
                                          QLineEdit *titre;
                                          QLineEdit *titreQuestion1;
                                      
                                          QTextEdit *texte;
                                      
                                          QComboBox *type;
                                      
                                          QPushButton *generer;
                                          QPushButton *code;
                                      
                                          QGroupBox *siOui;
                                      };
                                      
                                      
                                      #endif
                                      

                                      /*FenCodeGenere.cpp*/
                                      
                                      #include "FenCodeGenere.h"
                                      
                                      FenCodeGenere::FenCodeGenere(QString &code2, QWidget *parent = 0) : QDialog(parent)
                                      {
                                          codeGenere = new QTextEdit();
                                          codeGenere->setPlainText(code2);
                                          codeGenere->setReadOnly(true);
                                          codeGenere->setFont(QFont("Courier"));
                                          codeGenere->setStyleSheet("font-size:20 pt;");
                                          codeGenere->setLineWrapMode(QTextEdit::NoWrap);
                                      
                                          fermer = new QPushButton(tr("Fermer"));
                                      
                                          QVBoxLayout *layoutPrincipal = new QVBoxLayout;
                                          layoutPrincipal->addWidget(codeGenere);
                                          layoutPrincipal->addWidget(fermer);
                                      
                                          resize(700, 400);
                                          setLayout(layoutPrincipal);
                                      
                                          connect(fermer, SIGNAL(clicked()), this, SLOT(accept()));
                                      }
                                      

                                      /*FenCodeGenere.h*/
                                      
                                      #ifndef HEADER_FENCODEGENERE
                                      #define HEADER_FENCODEGENERE
                                      
                                      #include <QtGui>
                                      
                                      class FenCodeGenere : public QDialog
                                      {
                                      	public:
                                      		FenCodeGenere(QString &code2, QWidget *parent);
                                      
                                      	private:
                                              QTextEdit *codeGenere;
                                              QPushButton *fermer;
                                      };
                                      
                                      
                                      #endif
                                      

                                      titre1
                                      {
                                            background-color: red;
                                      }
                                      


                                      Mais le QLabel ne se colore pas :(

                                      • Partager sur Facebook
                                      • Partager sur Twitter

                                      L'important n'est pas de savoir maîtriser une technologie à la perfection, mais d'avoir une belle capacité d'adaptation.

                                        18 octobre 2008 à 12:06:35

                                        Personnellement, quand j'utilise des styleshhets, je préfère utiliser Qt designer, on se rend mieux compte et on ne s'embête pas avec les inclusions... Le designer de Qt est bien pensé, et il est là pour ça, en plus la fonction "preview" permet de voir comment va se présenter la fenêtre sans avoir besoin de compiler le code.
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          18 octobre 2008 à 12:13:48

                                          oui je sais mais là, j'ai crée le programme sans Qt designer et j'aimerais aussi savoir maitriser les styleSheest en C++...
                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          L'important n'est pas de savoir maîtriser une technologie à la perfection, mais d'avoir une belle capacité d'adaptation.

                                            19 octobre 2008 à 12:35:58

                                            UP

                                            </span></span></span>
                                            • Partager sur Facebook
                                            • Partager sur Twitter

                                            L'important n'est pas de savoir maîtriser une technologie à la perfection, mais d'avoir une belle capacité d'adaptation.

                                              19 octobre 2008 à 14:10:47

                                              Mais quel est le problème? Excuse moi, mais ce n'est pas très explicite.
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                19 octobre 2008 à 19:00:18

                                                Citation : yann33470

                                                désolé, je n'ai pas répondu mais de toute façon, je suis sur un autre logiciel tout bête (je m'ennuyais).
                                                Voici le code:

                                                /*main.cpp*/
                                                
                                                #include <QApplication>
                                                #include <QTranslator>
                                                #include <QLocale>
                                                #include <QLibraryInfo>
                                                #include <QtGui>
                                                #include "FenPrincipale.h"
                                                
                                                
                                                int main(int argc, char *argv[])
                                                {
                                                    QApplication app(argc, argv);
                                                
                                                    FenPrincipale fenetre;
                                                
                                                    QString locale = QLocale::system().name();
                                                    QTranslator translator;
                                                    translator.load(QString("qt_") + locale, QLibraryInfo::location(QLibraryInfo::TranslationsPath));
                                                    app.installTranslator(&translator);
                                                
                                                    QFile file("style.css");
                                                    file.open(QFile::ReadOnly);
                                                    QString styleSheet = QLatin1String(file.readAll());
                                                    app.setStyleSheet(styleSheet);
                                                
                                                    fenetre.show();
                                                
                                                    return app.exec();
                                                }
                                                

                                                /*FenPrincipale.cpp*/
                                                
                                                #include "FenPrincipale.h"
                                                #include "FenCodeGenere.h"
                                                
                                                FenPrincipale::FenPrincipale()
                                                {
                                                
                                                
                                                    setWindowIcon(QIcon("GF.ico"));
                                                
                                                    layoutPrincipal = new QVBoxLayout;
                                                
                                                    titre1 = new QLabel("Titre de la fenêtre:  ");
                                                    titre1->setObjectName("titre1");
                                                    titre = new QLineEdit;
                                                
                                                    layoutTitre = new QHBoxLayout;
                                                    layoutTitre->addWidget(titre1);
                                                    layoutTitre->addWidget(titre);
                                                
                                                    texte1 = new QLabel("Texte de la fenêtre: ");
                                                    texte = new QTextEdit;
                                                
                                                    QHBoxLayout *layoutTexte = new QHBoxLayout;
                                                    layoutTexte->addWidget(texte1);
                                                    layoutTexte->addWidget(texte);
                                                
                                                    type1 = new QLabel("Type de la fenêtre:");
                                                    type = new QComboBox;
                                                    type->addItem("Erreur");
                                                    type->addItem("Attention");
                                                    type->addItem("Information");
                                                    type->addItem("Question");
                                                
                                                    layoutType = new QHBoxLayout;
                                                    layoutType->addWidget(type1);
                                                    layoutType->addWidget(type);
                                                
                                                    generer = new QPushButton("Générer la fenêtre!");
                                                    generer->setObjectName("generer");
                                                
                                                    code = new QPushButton("Générer le code de la fenêtre!");
                                                
                                                    boutons = new QHBoxLayout;
                                                    boutons->addWidget(generer);
                                                    boutons->addWidget(code);
                                                
                                                    layoutPrincipal->addLayout(layoutTitre);
                                                    layoutPrincipal->addLayout(layoutTexte);
                                                    layoutPrincipal->addLayout(layoutType);
                                                    layoutPrincipal->addLayout(boutons);
                                                
                                                    setLayout(layoutPrincipal);
                                                
                                                    connect(generer, SIGNAL(clicked()), this, SLOT(genererFenetre()));
                                                    connect(code, SIGNAL(clicked()), this, SLOT(genererCode()));
                                                }
                                                void FenPrincipale::genererFenetre()
                                                {
                                                    QString titre2 = titre->text();
                                                    QString texte2 = texte->toPlainText();
                                                    QString type2 = type->currentText();
                                                
                                                    if(type2 == "Erreur")
                                                    {
                                                        QMessageBox::critical(this, titre2, texte2);
                                                    }
                                                    else if(type2 == "Attention")
                                                    {
                                                        QMessageBox::warning(this, titre2, texte2);
                                                    }
                                                    else if(type2 == "Information")
                                                    {
                                                        QMessageBox::information(this, titre2, texte2);
                                                    }
                                                    else if(type2 == "Question")
                                                    {
                                                        QMessageBox::question(this, titre2, texte2, QMessageBox::Yes, QMessageBox::No);
                                                    }
                                                }
                                                void FenPrincipale::genererCode()
                                                {
                                                    if (titre->text().isEmpty() && texte->toPlainText().isEmpty())
                                                    {
                                                        QMessageBox::critical(this, "Erreur", "Veuillez entrer un titre et un texte pour la fenêtre");
                                                        return; // Arrêt de la méthode
                                                    }
                                                
                                                    QMessageBox::information(this, "Attention", "Ce logiciel permet de générer une partie du code source nécéssaire. Vous devrez l'insérer dans un code source Qt existant. Pour plus d'informations, <a href='http://nairod.site90.net/' >cliquez ici</a>.");
                                                
                                                    // Si tout va bien, on génère le code
                                                    QString code2;
                                                
                                                    code2 += "/*Code généré automatiquement par le Générateur de Fenêtres de l'entreprise Myax's*/\n";
                                                
                                                    if(type->currentText() == "Erreur")
                                                    {
                                                        code2 += "QMessageBox::critical(this, \""+ titre->text() +"\", \""+ texte->toPlainText() +"\"); ";
                                                    }
                                                    else if(type->currentText() == "Attention")
                                                    {
                                                        code2 += "QMessageBox::warning(this, \""+ titre->text() +"\", \""+ texte->toPlainText() +"\"); ";
                                                    }
                                                    else if(type->currentText() == "Information")
                                                    {
                                                        code2 += "QMessageBox::information(this, \""+ titre->text() + "\", \""+ texte->toPlainText() +"\"); ";
                                                    }
                                                    else if(type->currentText() == "Question")
                                                    {
                                                        code2 += "QMessageBox::question(this,\""+ titre->text() + "\", \""+ texte->toPlainText() +"\", QMessageBox::Yes, QMessageBox::No); ";
                                                    }
                                                
                                                    // On crée puis affiche la fenêtre qui affichera le code généré, qu'on lui envoie en paramètre
                                                    FenCodeGenere *fenetreCode = new FenCodeGenere(code2, this);
                                                    fenetreCode->exec();
                                                }
                                                

                                                /*FenPrincipale.h*/
                                                
                                                #ifndef HEADER_FENPRINCIPALE
                                                #define HEADER_FENPRINCIPALE
                                                
                                                #include <QtGui>
                                                #include <QVBoxLayout>
                                                #include <QHBoxLayout>
                                                #include <QGridLayout>
                                                #include <QFile>
                                                
                                                class FenPrincipale : public QWidget
                                                {
                                                	Q_OBJECT
                                                
                                                	public:
                                                		FenPrincipale();
                                                
                                                    private slots:
                                                    void genererFenetre();
                                                    void genererCode();
                                                
                                                	private:
                                                    QVBoxLayout *layoutPrincipal;
                                                
                                                    QHBoxLayout *layoutTitre;
                                                    QHBoxLayout *layoutType;
                                                    QHBoxLayout *layoutTitreOui;
                                                    QHBoxLayout *boutons;
                                                
                                                    QLabel *titre1;
                                                    QLabel *texte1;
                                                    QLabel *type1;
                                                    QLabel *titreQuestion;
                                                
                                                    QLineEdit *titre;
                                                    QLineEdit *titreQuestion1;
                                                
                                                    QTextEdit *texte;
                                                
                                                    QComboBox *type;
                                                
                                                    QPushButton *generer;
                                                    QPushButton *code;
                                                
                                                    QGroupBox *siOui;
                                                };
                                                
                                                
                                                #endif
                                                

                                                /*FenCodeGenere.cpp*/
                                                
                                                #include "FenCodeGenere.h"
                                                
                                                FenCodeGenere::FenCodeGenere(QString &code2, QWidget *parent = 0) : QDialog(parent)
                                                {
                                                    codeGenere = new QTextEdit();
                                                    codeGenere->setPlainText(code2);
                                                    codeGenere->setReadOnly(true);
                                                    codeGenere->setFont(QFont("Courier"));
                                                    codeGenere->setStyleSheet("font-size:20 pt;");
                                                    codeGenere->setLineWrapMode(QTextEdit::NoWrap);
                                                
                                                    fermer = new QPushButton(tr("Fermer"));
                                                
                                                    QVBoxLayout *layoutPrincipal = new QVBoxLayout;
                                                    layoutPrincipal->addWidget(codeGenere);
                                                    layoutPrincipal->addWidget(fermer);
                                                
                                                    resize(700, 400);
                                                    setLayout(layoutPrincipal);
                                                
                                                    connect(fermer, SIGNAL(clicked()), this, SLOT(accept()));
                                                }
                                                

                                                /*FenCodeGenere.h*/
                                                
                                                #ifndef HEADER_FENCODEGENERE
                                                #define HEADER_FENCODEGENERE
                                                
                                                #include <QtGui>
                                                
                                                class FenCodeGenere : public QDialog
                                                {
                                                	public:
                                                		FenCodeGenere(QString &code2, QWidget *parent);
                                                
                                                	private:
                                                        QTextEdit *codeGenere;
                                                        QPushButton *fermer;
                                                };
                                                
                                                
                                                #endif
                                                

                                                titre1
                                                {
                                                      background-color: red;
                                                }
                                                



                                                Mais le QLabel ne se colore pas :(


                                                Tout y est dit, je voulais colorer le QLabel titre pour essayer mais ça n'a pas marché...
                                                • Partager sur Facebook
                                                • Partager sur Twitter

                                                L'important n'est pas de savoir maîtriser une technologie à la perfection, mais d'avoir une belle capacité d'adaptation.

                                                Anonyme
                                                  19 octobre 2008 à 19:56:45

                                                  Citation : yann33470

                                                  titre1
                                                  {
                                                        background-color: red;
                                                  }
                                                  
                                                  C'est pas du css ça :
                                                  #titre1
                                                  {
                                                        background-color: red;
                                                  }
                                                  
                                                  Avec ça, ça marche ??
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    20 octobre 2008 à 17:35:14

                                                    tojours pas, désolé... :(
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter

                                                    L'important n'est pas de savoir maîtriser une technologie à la perfection, mais d'avoir une belle capacité d'adaptation.

                                                    Anonyme
                                                      20 octobre 2008 à 19:08:44

                                                      Citation : yann33470

                                                      tojours pas, désolé... :(

                                                      Si ça vient pas du css, ça viens du code :
                                                      QFile file("style.css");
                                                      file.open(QFile::ReadOnly);
                                                      QString styleSheet = QLatin1String(file.readAll());
                                                      app.setStyleSheet(styleSheet);
                                                      
                                                      Vérifie si le fichier existe et s'ouvre bien et si styleSheet contient bien le css avec le bon encodage.
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        21 octobre 2008 à 18:16:02

                                                        Ah merci beaucoup!!!!! Ça marche!!!!!!!!

                                                        Et un problème en moins!

                                                        A+ et encore merci!!
                                                        :D:D:D:D:D
                                                        .. :lol::lol::lol::lol:
                                                        .... ^^^^^^
                                                        ...... ;);)
                                                        ........ :)

                                                        EDIT: Comment on fait pour appliquer un style à la fenêtre? j'ai fait:
                                                        #FenPrincipale
                                                        {   
                                                              background-color: blue;
                                                        }
                                                        
                                                        Mais ça ne marche pas!!
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter

                                                        L'important n'est pas de savoir maîtriser une technologie à la perfection, mais d'avoir une belle capacité d'adaptation.

                                                          17 décembre 2008 à 17:33:51

                                                          up?
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter

                                                          L'important n'est pas de savoir maîtriser une technologie à la perfection, mais d'avoir une belle capacité d'adaptation.

                                                          Anonyme
                                                            17 décembre 2008 à 17:49:01

                                                            <hs>

                                                            Citation : yann33470

                                                            up?

                                                            « Big up ! » plutôt ^^ .</hs>

                                                            Citation : yann33470

                                                            EDIT: Comment on fait pour appliquer un style à la fenêtre? j'ai fait:

                                                            #FenPrincipale
                                                            {   
                                                                  background-color: blue;
                                                            }
                                                            

                                                            Mais ça ne marche pas!!

                                                            FenPrincipale est, je supposes, le nom de la classe, et non le nom de l'instance, donc retire le # .
                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              18 décembre 2008 à 18:27:09

                                                              Perso je te conseille d'éviter de tout faire widget par widget, certes c'est plus précis mais c'est plus long a créer et a appliquer.

                                                              Fait plutot un truc genre (ici pour les boutons):
                                                              QPushButton { /* ta personnalisation */ }


                                                              ca sera beaucoup plus rapide a générer.

                                                              PS : juste comme ca, appliquer un style ralenti énormément une application, ca peut etre joli mais je te conseille donc de mettre un option pour désactiver les styles^^
                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              Qt : perssonaliser un pushboutton et un combobox

                                                              × 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