Partage
  • Partager sur Facebook
  • Partager sur Twitter

évaluation projet Qt

    17 février 2021 à 7:36:16

    Bonjour,

    voila un moment que je suis le cour C++ d'oc ( la je suis au TP zeroClassGenerator que j'ai pas encore commencer ), je m'arrête souvent pour m'exercer, surtout dans la partie  Qt.

    Vu tout ce qu'il m'as été dit sur ce forum j'ai aussi été lire le cour C++ de ZDS ( la je suis arriver au itérateur ).

    Je lit aussi beaucoup la doc de Qt et surtout ses exemples qui sont je trouve un bon moyen de pratiquer et d'apprendre ++ . Du coup j'en suis à l'exemple "basic layout" dans le quel j'ai ajouter pas mal de chose, et j'ai aussi appris à traduire les apps avec " tr("texte à traduire") " avec qt linguist grâce aussi a l'exemple de Qt;

    Mais il reste 2 chose que j'ai pas saisit tout seul, et aussi si il y as des expert en Qt qui pourrait survoler mon code pour voir si je suis pas trop à coter de la plaque pour un début.

    les deux choses pas bien compris :

    QLabel           *m_labels[numGrilleRangee];
    
    // je comprend pas le fait de mettre l'enumeration dans les crochet dans les attributs;
    m_boutons[i] = new QPushButton(tr("Button %1").arg(i +1));
    
    //ici c'est la .arg , bien que je vois très bien le résultat j'ai pas trouver d'info la dessus.

    Et maintenant voici dans l'ordre les fichiers .h, le .cpp , le main et le .ts :

    #ifndef FENETRE_H
    #define FENETRE_H
    #include <QApplication>
    #include <QPushButton>
    #include <QWidget>
    #include <QDialog>
    #include <QMenuBar>
    #include <QMenu>
    #include <QGroupBox>
    #include <QVBoxLayout>
    #include <QHBoxLayout>
    #include <QFormLayout>
    #include <QComboBox>
    #include <QSpinBox>
    #include <QTextEdit>
    #include <QLabel>
    #include <QLineEdit>
    #include <QDialogButtonBox>
    #include <QAction>
    
    #include <QFont>
    #include <QFontDialog>
    #include <QMessageBox>
    #include <QColor>
    #include <QColorDialog>
    #include <QPalette>
    
    
    
    
    
    class Fenetre :  public QDialog
    
    {
        Q_OBJECT
    
    public :
    
        Fenetre();
    
    public slots :
    
        void changerPolice();
        void changerCouleur();
        void surlignerTexte();
        void changerArrierePlan();
        void afficheRGB(QColor const &couleur);
        void message(int const index);
    
    
    
    private:
    
        void creerMenu();
        void creerGroupeBoxHorizontal();
        void creerGrillageBox();
        void creerGroupeDeFormeBox();
        bool analyseCouleurRGB(QColor const &couleurTexte, QColor const &m_couleur);
        bool analyseCouleurRGBPresqueLesMemes(QColor const &couleurTexte, QColor const &m_couleur);
        void bigTexteCouleurInverse(QColor &couleurTexte);
        void smallTexteCouleurInverse(QColor &couleurTexte);
        void inverseColorTextBackground(QColor &textBackground);
        void easterEggs();
    
    
        enum { numGrilleRangee = 3, NumBouttons = 4};   // on crée une énumération valant 3 et 4 pour les utiliser dans boucle for dans le .cpp
    
        //Attribut de l'exemple
        QMenuBar         *m_menuBar;
        QGroupBox        *m_horizontalGroupBox;
        QGroupBox        *m_gridGroupBox;
        QGroupBox        *m_groupeBoxDeForme;
        QTextEdit        *m_smallEditor;
        QTextEdit        *m_bigEditor;
        QLabel           *m_labels[numGrilleRangee];
        QLineEdit        *m_lineEdits[numGrilleRangee];      // A voir pour mieux comprendre pourquoi on utilise les enum ici;
        QPushButton      *m_boutons[NumBouttons];
        QDialogButtonBox *m_BoutonBox;
    
        QMenu            *m_fichierMenu;
        QAction          *m_ActionQuitter;
        QComboBox        *m_Box;
        QLineEdit        *m_qLineEdit;
        QSpinBox         *m_spinBox;
    
        //Attribut rajouté pour mes besoins
        QFont            m_police;
    
        QColor           m_couleurArrierePlan;
        QColor           m_textBackgroundColor;
        QColor           m_textColorB;
        QColor           m_textColorS;
        QPalette         m_palette;
        QTextCursor      m_curseurBig;
        QTextCursor      m_curseurSmall;
    
    
    
    
    };
    
    #endif // FENETRE_H
    

    CPP

    /*
    *D'avance, mon orthographe n'est pas au top, mais ne doit pas être le pire (j'espère), apres le c++ j'apprendrai le français lol;
    *
    *Code pour mon apprentissage des Qlayout, les QGroupBox, QTextEdit,
    *et surtout apprendre la personalisation des widgets et
    *m'entrainer à lire la doc et aussi un peu google;
    *
    *A la base c'est l'exemple des "basic layout" de la doc de Qt
    *(j'ai tout écrit rien copier coller sinon c'est de la triche)!
    *
    *url des eemples exemples utilisé : https://doc.qt.io/qt-5/qtwidgets-layouts-basiclayouts-example.html ;
    *                                 : https://doc.qt.io/qt-5/qtlinguist-hellotr-example.html
    *
    *J'ai ajoute quelque méthode et appris de nouvelle chose par rapport au cour c++ d'oc
    *( à ce stade je me suis arêtté au chapitre des layouts );
    *ce code sert pas à grand choses juste à mon apprentissage et est un condenser des
    *choses vue jusqu'a ce stade, et n'est certainement pas le meilleur code du monde mais c'est un début;
    *Les commentaires plus bas me servent a moi surtout pour me souvenir et verifier si j'ai bien compris;
    
    Aucun warning donc je pense que c'est pas mal quand même;
    Et surtout, tout fonctionne !;
    */
    
    
    /*
     * Liste de ce que ma fenetre contien :
     *
     * Un menu;
     * Des QGroupBox layout contenant des layouts et leurs widgets :
     *
     * QVBoxLayout "principal" avec tout dedans et a la fin il y as un QTextEdit;
     * QHBoxLayout avec 4 QPushbutton que j'ai connecté au des slots que j'ai implémenté;
     *
     * QGridLayout avec 3 QLineEdit les quels j'ai modifié un peu pour expérimenter;
     * Le QGridLayout contient aussi un plus petit QTextEdit;
     *
     * QFormLayout avec 1 QLineEdit, 1 QComboBox et 1 QSpinBox que j'ai aussi epérimenté un peu leurs fonctionnalités;
     * Le QComboBox affiche un message en fonction de la selection;
     *
     * Les 4 QPushButton sont "font", "color", "highlight", "background color" pour éditer les 2 QTextEdit;
     * On peut donc :
     * - Changer la police d'ecriture;
     * - Changer la couleur du texte si du texte est selectionné, sinon une boite de dialogue "information" s'ouvre;
     * - Surligné le texte si du texte est selectionné;
     * - Changer la couleur d'arrière plan des QTextEdit;
     *
     * J'ai des algorithme d'analyse et d'inversion des couleurs pour éviter que :
     *
     * - Couleur background et texte soit de la meme couleur;
     * - Si c'est le cas ( background noir et texte noir ) le texte deviendra blanc;
     * - Est capable des laisser les 'char' d'une couleur déjà différent comme il le sont;
     *
     * - Couleur background et texte soit PRESQUE de la meme couleur;
     * - Si c'est le cas on inverse aussi les couleurs, on analyse chaque caractère pour les textes multicolor;
     *
     * J'ai crée un easter egg complet sur le theme de "Doctor Who" =D pour l'activer il faut :
     * Choisir comme background color : #003b6f ;
     *
     * Des "tr" pour pouvoir traduire l'app dans la langue voulue, je l'ai fait en Fr;
     *
     * Il y a aussi une méthode affige rgb qui m'as servit "juste une fois" a debug mes algorythme de couleur;
    */
    
    #include "Fenetre.h"
    #include <QObject>
    
    
    Fenetre::Fenetre()
                                           //Création de la fenetre comme dans l'exemple basic layout de la doc de Qt;
    {
         this->setMinimumSize(500,600);
    
       //Appel de methode à la place de tout écrire ici
         creerMenu();
         creerGroupeBoxHorizontal();
         creerGrillageBox();
         creerGroupeDeFormeBox();
    
       //On crée le bigEditor ici et on le place en bas de la fenetre;
         m_bigEditor = new QTextEdit;
    
       //Utile pour une méthode plus loin pour éviter de mettre le texte de la même couleur que background par deéfaut il y avait pas de background;
    
         m_textColorS         = Qt::black;
         m_textColorB         = Qt::black;
         m_couleurArrierePlan = Qt::white;
         m_palette     .setColor(QPalette::Base, m_couleurArrierePlan);
         m_bigEditor   ->setPalette(m_palette);
    
                                        //Ici je met le texte en anglais exprès pour pouvoir le traduire;
         m_bigEditor   ->setPlainText(tr("This is a great text editor in case you haven't seen it!"));
    
    
    
         m_BoutonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
    
         connect(m_BoutonBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
         connect(m_BoutonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
    
         QVBoxLayout *layoutPrincipal  { new QVBoxLayout };
    
         layoutPrincipal->setMenuBar(m_menuBar);
    
         layoutPrincipal->addWidget(m_horizontalGroupBox);
         layoutPrincipal->addWidget(m_gridGroupBox);
         layoutPrincipal->addWidget(m_groupeBoxDeForme);
         layoutPrincipal->addWidget(m_bigEditor);
         layoutPrincipal->addWidget(m_BoutonBox);
    
         setLayout(layoutPrincipal);
    
         setWindowTitle(tr("Basic Layout"));
    
    }
    
    
    void Fenetre::creerMenu()
    
    {
       //On crée un objet QmenuBar ensuite on crée un menu avec son titre et on ajoute QmenuBar dans Qmenu;
         m_menuBar = new QMenuBar;
    
       //Alors "(tr("texte"))" sert à pouvoir traduire le texte dans les autres langages !;
         m_fichierMenu = new QMenu(tr("&File"), this);
         m_ActionQuitter = m_fichierMenu->addAction(tr("E&xit"));
         m_menuBar->addMenu(m_fichierMenu);
    
       //On connecte l'action " déclenché " à "QDialog::accept"; // Autre manière de faire que dans le cours ( ptr ,SIGNAL(()),ptr, SLOT(()) )
         connect(m_ActionQuitter, &QAction::triggered, this , &QDialog::accept);
    
    }
    
    void Fenetre::creerGroupeBoxHorizontal()
    
    {
       //On crée un GroupBox horizontal avec titre;
         m_horizontalGroupBox = new QGroupBox(tr("QHBoxLayout : Horizontal layout"));
         QHBoxLayout *layout  { new QHBoxLayout };
    
       //Création de 4 QPushButton enum vallant 4
         for (int i { 0 }; i <NumBouttons; ++i)
         {                                                              // Ici me reste a comprendre .arg
             m_boutons[i] = new QPushButton(tr("Button %1").arg(i +1)); // << A VOIR ABSOLUMENT ! %1 devient 1, 2, 3 ect grace à "... %1").arg(i (int) + 1)" !
             m_boutons[i]->setMaximumWidth(100);
    
             layout->addWidget(m_boutons[i]);                           // Ajout des pushButton;
         }
       //Personalisation et connection des QPushButton;
         m_boutons[0]->setText(tr("Font"));
         m_boutons[1]->setText(tr("Color"));
         m_boutons[2]->setText(tr("Highlight"));
         m_boutons[3]->setText(tr("Background Color"));
         m_boutons[3]->setMinimumWidth(150);
         m_boutons[3]->setMaximumWidth(150);
    
         m_horizontalGroupBox->setLayout(layout);
    
         connect(m_boutons[0], &QPushButton::clicked , this , &Fenetre::changerPolice);
         connect(m_boutons[1], &QPushButton::clicked , this , &Fenetre::changerCouleur);
         connect(m_boutons[2], &QPushButton::clicked , this , &Fenetre::surlignerTexte);
         connect(m_boutons[3], &QPushButton::clicked , this , &Fenetre::changerArrierePlan);
    }
    
    void Fenetre::creerGrillageBox()
    
    {      //Même principe que la methode précédente;
             m_gridGroupBox = new QGroupBox(tr("QGridLayout : Grid layout"));
             QGridLayout *layout  { new QGridLayout };
    
             for (int i { 0 }; i<numGrilleRangee; ++i)
    
             {
               m_labels[i]    = new QLabel(tr("line %1").arg(i + 1));
               m_lineEdits[i] = new QLineEdit;
               m_lineEdits[i]->setMinimumWidth(100); // petit réglage;
               m_lineEdits[i]->setMaximumWidth(200);
               layout->addWidget(m_labels[i]   ,i +1, 0); // Positionnement presque automatique  titre + widget =D
               layout->addWidget(m_lineEdits[i],i +1, 1);
    
             }
             m_lineEdits[0]->setText(tr("Hello"));
    
           //Ajout d'un petit QTextEdit;
             m_smallEditor = new QTextEdit;
             m_couleurArrierePlan = Qt::white;
             m_smallEditor->setPalette(m_couleurArrierePlan);
             m_smallEditor->setPlainText(tr("If you write small, you can write here"));
    
             layout->addWidget(m_smallEditor, 0, 2, 4, 1);
             layout->setColumnStretch(1, 10);
             layout->setColumnStretch(2, 20);
    
             m_gridGroupBox->setLayout(layout);
    }
    
    void Fenetre::creerGroupeDeFormeBox()
    
    {
            //On crée une liste pour nourrir le QComboBox;
              QStringList liste;
              liste.append("\0");
              liste.append(tr("I love Belgian fries!"));
              liste.append(tr("I love broccoli!"));
              liste.append(tr("I don't like fries or broccoli!"));
    
              m_Box = new QComboBox;
              m_Box->addItems(liste);
    
              m_groupeBoxDeForme = new QGroupBox(tr("QFormLayout : Form layout"));
              QFormLayout *layout  { new QFormLayout };
    
              layout->addRow(new QLabel(tr("Line 1 :")),m_qLineEdit = new QLineEdit);
              layout->addRow(new QLabel(tr("Line 2, Long text :")), m_Box);
              layout->addRow(new QLabel(tr("Line 3 :")),m_spinBox = new QSpinBox);
    
              m_groupeBoxDeForme->setLayout(layout);
    
              QObject::connect(m_Box, SIGNAL(currentIndexChanged(int)), this, SLOT(message(int))); // J'ai eu du mal avec le signal surchargé;
    }
    
    void Fenetre::changerPolice()
    
    {
        m_curseurBig   =   m_bigEditor->textCursor();                    // On crée un objet curseur qui recupère le texte selectionné;
        m_curseurSmall =   m_smallEditor->textCursor();
        QTextCharFormat format;                                          // On crée un objet charFormat qui contient les informations voulue pour setCharFormat;
    
    
    if(m_curseurBig.hasSelection() || m_curseurSmall.hasSelection())     // On test si du texte est vraiment selectionné;
    
        {
          bool ok = false;
          m_police = QFontDialog::getFont(&ok, m_bigEditor->font(), this, "Choisissez une police");
    
        //On fait un setFont afin de prendre les reglages de QfontDialog;
          format.setFont(m_police);
          m_bigEditor->  textCursor().mergeCharFormat(format);
          m_smallEditor->textCursor().mergeCharFormat(format);
        }
    
    else
        {
          QMessageBox::information(this, tr("Font"), tr("Please select some text first."));
        }
    }
    
    
    void Fenetre::changerCouleur()
    
    {
    //Curseurs pour vérifier si l'utilisateur à vraiment selectionner du texte;
        m_curseurBig   = m_bigEditor  ->textCursor();
        m_curseurSmall = m_smallEditor->textCursor();
    
    //Comme l'utilisateur à selectionné du texte on peux changer la couleur;
    if(m_curseurBig.hasSelection())
        {
    
        QColor m_couleur { QColorDialog::getColor(Qt::black,this) };
        m_textColorB = m_bigEditor->textColor();
    
            int S  { m_curseurBig.selectionStart() };
            int E  { m_curseurBig.selectionEnd() };
            int nC { E - S };                          //Nombre de 'char' selectionné;
    
            m_curseurBig.setPosition(S, QTextCursor::MoveAnchor);
            m_curseurBig.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor,1);
            m_bigEditor->setTextCursor(m_curseurBig);
    
            for (int i { 0 }; i < nC ; ++i)
            {
    
                m_textColorB = m_bigEditor->textColor();  // on sauvegarde la couleur d'origine du 'char' pour la réutiliser plus bas;
    
                 //Si couleur texte == couleur background && non surligné || couleur texte presque == couleur background && non surligné;
            if ( (analyseCouleurRGB(m_couleur, m_couleurArrierePlan) && m_bigEditor->textBackgroundColor() == Qt::black) || (analyseCouleurRGBPresqueLesMemes(m_couleur, m_couleurArrierePlan) && m_bigEditor->textBackgroundColor() == Qt::black) )
    
                   {
                      if (analyseCouleurRGBPresqueLesMemes(m_couleur, m_couleurArrierePlan) && i==0 )
    
                         {
                             QMessageBox::critical(this, tr("Color"), tr("The chosen color is not of good visibility on this background, if the background is light please darken your color or select another one, if the background is dark please lighten your color or select another one. if you don't want to, stop using the QTextEdit right away!") );
                         }
    
                      m_bigEditor->setTextColor(m_textColorB); // on laisse le texte de la couleur qu'il étais déjà;
                   }
    
            //Si texte surligné && pas surligner en blanc;
            else if ( (m_bigEditor->textBackgroundColor() != Qt::black && m_bigEditor->textBackgroundColor() != Qt::white) )
    
                      {
                         m_bigEditor->setTextColor(Qt::black);
                      }
    
            //Si texte non surligné et de couleur différente que background;
            else if (m_bigEditor->textBackgroundColor() == Qt::black)
    
                         {
                             m_bigEditor->setTextColor(m_couleur); // Ok on applique la couleur;
                         }
    
         if(m_bigEditor->textCursor().atEnd())       { break; }  //Autrement le 'char' suivant était selectionné en fin de boucle;
            m_bigEditor->setTextCursor(m_curseurBig);
            m_bigEditor->moveCursor(QTextCursor::NextCharacter, QTextCursor::MoveAnchor);
            m_bigEditor->moveCursor(QTextCursor::NextCharacter, QTextCursor::KeepAnchor);
            m_curseurBig = m_bigEditor->textCursor();
    
            } //for
    
            m_bigEditor->moveCursor(QTextCursor::End, QTextCursor::MoveAnchor);
        }
    
    // - - - - - - - - - - - - - - - - - - - - - - smallEditor - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    
    if (m_curseurSmall.hasSelection())
    
        {
        QColor m_couleur { QColorDialog::getColor(Qt::black,this) };
        m_textColorS = m_smallEditor->textColor();
    
              int S  { m_curseurSmall.selectionStart() };
              int E  { m_curseurSmall.selectionEnd() };
              int nC { E - S };
    
              m_curseurSmall.setPosition(S, QTextCursor::MoveAnchor);
              m_curseurSmall.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor,1);
              m_smallEditor->setTextCursor(m_curseurSmall);
    
              for (int i { 0 }; i < nC ; ++i)
              {
                  m_textColorS = m_smallEditor->textColor();
    
              if ( (analyseCouleurRGB(m_couleur, m_couleurArrierePlan) && m_smallEditor->textBackgroundColor() == Qt::black) || (analyseCouleurRGBPresqueLesMemes(m_couleur, m_couleurArrierePlan) && m_smallEditor->textBackgroundColor() == Qt::black) )
    
                    {
                       if (analyseCouleurRGBPresqueLesMemes(m_couleur, m_couleurArrierePlan) && i==0 )
    
                          {
                              QMessageBox::critical(this, tr("Color"), tr("The chosen color is not of good visibility on this background, if the background is light please darken your color or select another one, if the background is dark please lighten your color or select another one. if you don't want to, stop using the QTextEdit right away!") );
                          }
    
                       m_smallEditor->setTextColor(m_textColorS);
                    }
    
              else if ( (m_smallEditor->textBackgroundColor() != Qt::black && m_smallEditor->textBackgroundColor() != Qt::white) )
    
                        {
                           m_smallEditor->setTextColor(Qt::black);
                        }
    
              else if (m_smallEditor->textBackgroundColor() == Qt::black)
    
                           {
                              m_smallEditor->setTextColor(m_couleur);
                           }
    
           if(m_smallEditor->textCursor().atEnd())         { break; }
              m_smallEditor->setTextCursor(m_curseurSmall);
              m_smallEditor->moveCursor(QTextCursor::NextCharacter, QTextCursor::MoveAnchor);
              m_smallEditor->moveCursor(QTextCursor::NextCharacter, QTextCursor::KeepAnchor);
              m_curseurSmall = m_smallEditor->textCursor();
              }//for
    
              m_smallEditor->moveCursor(QTextCursor::End, QTextCursor::MoveAnchor);
         }
    
    //L'utilisateur n'as pas selectionné de texte;
    if ( (!m_curseurBig.hasSelection()) && (!m_curseurSmall.hasSelection()) )
        {
            QMessageBox::information(this, tr("Color"), tr("Please select some text first."));
        }
    }
    
    void Fenetre::surlignerTexte()
    
    {
        m_curseurBig          = m_bigEditor->textCursor();
        m_curseurSmall        = m_smallEditor->textCursor();
        QColor m_couleur      { Qt::yellow };                    // On surligne en jaune, pas le choix ah!  ;
        m_textBackgroundColor = m_couleur;                       // Utilisée dans "Couleur" et "changerArrierePlan"
    
        if(m_curseurBig.hasSelection()|| m_curseurSmall.hasSelection())
    
            {
     //On verifie que background n'est pas jaune ou presque le même jaune;
    
            if (analyseCouleurRGB(m_couleur, m_couleurArrierePlan) || ( (m_couleurArrierePlan.red() && m_couleurArrierePlan.green() > 165) && m_couleurArrierePlan.blue() == 0) )
               {
                  m_textBackgroundColor = Qt::white;
    
                  m_bigEditor             ->setTextBackgroundColor(m_textBackgroundColor);
                  m_bigEditor             ->setTextColor(Qt::black);
                  m_smallEditor           ->setTextBackgroundColor(m_textBackgroundColor);
                  m_smallEditor           ->setTextColor(Qt::black);
               }
    
               else  // Sinon on peut surligner en jaune avec texte en noir ( tjs pas le choix);
    
               {
                  m_bigEditor    ->setTextBackgroundColor(m_couleur);
                  m_bigEditor    ->setTextColor(Qt::black);
    
                  m_smallEditor  ->setTextBackgroundColor(m_couleur);
                  m_smallEditor  ->setTextColor(Qt::black);
               }
    
            }
    
            else
            {
                QMessageBox::information(this, tr("Highlight"), tr("Please select some text first."));
            }
    
    }
    
    void Fenetre::changerArrierePlan()  // Juste pour s'amuser on peut choisir n'importe quelle couleur, le plus simple aurais été de choisir entre normal ou black (theme sombre);
    
    {
        QColor m_couleur { QColorDialog::getColor(Qt::black, this) };  // On choisit une couleur pour l'arrière plan;
    
    if(m_couleur.isValid())
        {
    
        m_palette.setColor(QPalette::Base, m_couleur);               // On met la valeur de QColor dans QPalette;
        m_couleurArrierePlan = m_couleur;                            // On sauvegarde la couleur pour les besoins d'une autre méthode
    
        QColor couleurTexte { m_bigEditor->textColor() };            // On recupère la couleur du texte;
    
             if(m_couleur.name() == "#003b6f")                       // J'ai pas pu m'en empécher; Couleur T.A.R.D.I.S. ;
    
             {
                 easterEggs();
             }
    
    
        QColor slct { } ;
        QString mot { m_bigEditor->QTextEdit::toPlainText() };       // Juste pour mot.size() dans boucle for;
    
    if (m_couleur.name() != "#003b6f")                               // Sinon j'avais un bug d'easterEggs;
    {
    
           m_bigEditor->moveCursor(QTextCursor::Start, QTextCursor::MoveAnchor);          //Premier 'char' test si surligné + couleur && test couleur texte non surligné;
           m_bigEditor->moveCursor(QTextCursor::NextCharacter, QTextCursor::KeepAnchor);
           m_curseurBig = m_bigEditor->textCursor();
    
           m_textBackgroundColor = m_bigEditor->textBackgroundColor();
           slct                  = m_bigEditor->textColor();
    
                for(int i{0}; i<mot.size(); ++i)
            {
                    couleurTexte          = m_bigEditor->textColor();             //QColor pour texteCouleurInverse
                    m_textBackgroundColor = m_bigEditor->textBackgroundColor();   //QColor pour background analyse
                    slct                  = m_bigEditor->textColor();             //QColor pour analyse
    
    // Test si texte surligné;
    if(m_bigEditor->textBackgroundColor() != Qt::black)  // Quand pas de textColorBackground c'est 0.0.0 donc Qt::black ;
    
            {           //Test couleur surlignage == background && surlignage != blanc && backround != blanc || Test couleur surlignage presque == background && surlignage != blanc && backround != blanc
                if ( ( (analyseCouleurRGB(m_textBackgroundColor, m_couleur) && m_textBackgroundColor != Qt::white) && m_couleur != Qt::white ) || ( (analyseCouleurRGBPresqueLesMemes(m_textBackgroundColor, m_couleur) && m_textBackgroundColor != Qt::white ) && m_couleur != Qt::white) )
                        {
                            m_bigEditor->setTextBackgroundColor(Qt::white);
                            m_bigEditor->setTextColor          (Qt::black);
                        }
    
           else if (m_bigEditor->textBackgroundColor() != Qt::yellow)
                           {
                               m_bigEditor->setTextBackgroundColor(Qt::yellow);
                               m_bigEditor->setTextColor          (Qt::black) ;
                           }
            }
    // test si la couleur du texte est pas == que couleur background choisie && si texte non surligné || test si presque ...;
    if( (analyseCouleurRGB(slct, m_couleur) && m_bigEditor->textBackgroundColor() == Qt::black) || (analyseCouleurRGBPresqueLesMemes(slct, m_couleur) && m_bigEditor->textBackgroundColor() == Qt::black) )
    
                              {
                                  bigTexteCouleurInverse(couleurTexte);    // Inversons les couleurs =D
                                  m_bigEditor->moveCursor(QTextCursor::Start, QTextCursor::MoveAnchor);
                              }
    
                        if(m_bigEditor->textCursor().atEnd())       { break; }
                           m_bigEditor->setTextCursor(m_curseurBig);
                           m_bigEditor->moveCursor(QTextCursor::NextCharacter, QTextCursor::MoveAnchor);
                           m_bigEditor->moveCursor(QTextCursor::NextCharacter, QTextCursor::KeepAnchor);
                           m_curseurBig          = m_bigEditor->textCursor();
    
            }//for
    }
                // On applique le paramettre;
                m_bigEditor    ->setPalette(m_palette);
                m_bigEditor    ->moveCursor(QTextCursor::Start, QTextCursor::MoveAnchor);
    
    // - - - - - - - - - - - - - - - - - - - - - - - - - - -  smallEditor   - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    
       mot = m_smallEditor         ->QTextEdit::toPlainText();
             m_smallEditor         ->moveCursor(QTextCursor::Start, QTextCursor::MoveAnchor);
             m_smallEditor         ->moveCursor(QTextCursor::NextCharacter, QTextCursor::KeepAnchor);
             m_curseurSmall        = m_smallEditor->textCursor();
    
             couleurTexte          = m_smallEditor->textColor();
             m_textBackgroundColor = m_smallEditor->textBackgroundColor();
             slct                  = m_smallEditor->textColor();
    
             for(int i{0}; i<mot.size(); ++i)
    
             {
                 couleurTexte          = m_smallEditor->textColor();
                 m_textBackgroundColor = m_smallEditor->textBackgroundColor();
                 slct                  = m_smallEditor->textColor();
    
    if(m_smallEditor->textBackgroundColor() != Qt::black)
            {
                if ( ((analyseCouleurRGB(m_textBackgroundColor, m_couleur) && m_textBackgroundColor != Qt::white) && m_couleur != Qt::white) || ((analyseCouleurRGBPresqueLesMemes(m_textBackgroundColor, m_couleur) && m_textBackgroundColor != Qt::white) && m_couleur != Qt::white) )
    
                     {
                         m_smallEditor->setTextBackgroundColor(Qt::white);
                         m_smallEditor->setTextColor          (Qt::black);
                     }
           else if (m_smallEditor->textBackgroundColor() != Qt::yellow)
    
                        {
                            m_smallEditor->setTextBackgroundColor(Qt::yellow);
                            m_smallEditor->setTextColor          (Qt::black) ;
                        }
            }
    
    if( (analyseCouleurRGB(slct, m_couleur) && m_bigEditor->textBackgroundColor() == Qt::black) || (analyseCouleurRGBPresqueLesMemes(slct, m_couleur) && m_bigEditor->textBackgroundColor() == Qt::black) )
    
                           {
                              smallTexteCouleurInverse(couleurTexte);
                              m_smallEditor->moveCursor(QTextCursor::Start, QTextCursor::MoveAnchor);
                           }
    
           if(m_smallEditor->textCursor().atEnd())         { break; }
              m_smallEditor->setTextCursor(m_curseurSmall);
              m_smallEditor->moveCursor(QTextCursor::NextCharacter, QTextCursor::MoveAnchor);
              m_smallEditor->moveCursor(QTextCursor::NextCharacter, QTextCursor::KeepAnchor);
              m_curseurSmall = m_smallEditor->textCursor();
    
            } //for
    
             m_smallEditor  ->setPalette(m_palette);
             m_smallEditor  ->moveCursor(QTextCursor::Start, QTextCursor::MoveAnchor);
    
        }
    
             if( !m_couleur.isValid() )        // == Cancel;
        {
            QMessageBox::critical(this, "QColorDialog", tr("You have to know what you want!"));
        }
    }
    
    
    bool Fenetre::analyseCouleurRGB(QColor const &couleurTexte, QColor const &m_couleur)
    
    {
        if (couleurTexte == m_couleur)
           {
               return true;
           }
    
        return false;
    }
    
    
    bool Fenetre::analyseCouleurRGBPresqueLesMemes(QColor const &couleurTexte, QColor const &m_couleur) // Juste au cas où on verifie quel le texte reste visible;
    
    {   // Le but est de garde le texte " +/- visible " après beaucoup de test, ça marche mais c'est loin d'être parfait quand même;
    
        // Ici on à beaucoup de cas de figure à traiter 26 (27 - 1 qui est deja dans "analyseCouleurRGB");
        // Tentez d'avoir une tolérence de 100 point sur 255;
    
        QColor rgb;  // <<< M'as servit pour debug cet algorythme avec ma methode "afficheRGB(rgb)";
        int red  { 255 }, green  { 255 }, blue { 255 } , val { 255 };
    
    // Couleur R||G||B;
    
    //Si 1 couleur du texte plus petite que la couleur arrière plan;**********************************************************************************
    //************************************************************************************************************************************************
        if ( (couleurTexte.red() < m_couleur.red  () && couleurTexte.green() == m_couleur.green())  && couleurTexte.blue() == m_couleur.blue ())
        {
            // Par exemple R 255 - R 225 = R 30 == 30 < 100 alors plus bas on renvoie true;
    
            val      = m_couleur.value()   - couleurTexte.value();
            red      = m_couleur.red()     - couleurTexte.red();    rgb.setRed(red);
            green    = m_couleur.green()   - couleurTexte.green();  rgb.setGreen(green); // rgb && afficheRGB m'ont servit a voir ce que je faisait au départ de cette méthode;
            blue     = m_couleur.blue()    - couleurTexte.blue();   rgb.setBlue(blue);   // afficheRGB(rgb);
    
            if(red<100 || val < 50){return true ;}
            else                   {return false;}
        }
    
        if ( (couleurTexte.red() > m_couleur.red  () && couleurTexte.green() == m_couleur.green())  && couleurTexte.blue() == m_couleur.blue ())
        {
            val      = couleurTexte.value()- m_couleur.value();
            red      = couleurTexte.red()  - m_couleur.red();       rgb.setRed(red);
            green    = m_couleur.green()   - couleurTexte.green();  rgb.setGreen(green);
            blue     = m_couleur.blue()    - couleurTexte.blue();   rgb.setBlue(blue);
    
            if(red<100 || val < 50){return true ;}
            else                   {return false;}
        }
    //************************************************************************************************************************************************
        if ( (couleurTexte.red() == m_couleur.red  () && couleurTexte.green() < m_couleur.green())  && couleurTexte.blue() == m_couleur.blue ())
        {
            val      = m_couleur.value()   - couleurTexte.value();
            red      = m_couleur.red()     - couleurTexte.red();    rgb.setRed(red);
            green    = m_couleur.green()   - couleurTexte.green();  rgb.setGreen(green);
            blue     = m_couleur.blue()    - couleurTexte.blue();   rgb.setBlue(blue);
    
            if(green<100 || val < 50){return true ;}
            else                     {return false;}
        }
    
        if ( (couleurTexte.red() == m_couleur.red  () && couleurTexte.green() > m_couleur.green())  && couleurTexte.blue() == m_couleur.blue ())
        {
            val      = couleurTexte.value()- m_couleur.value();
            red      = m_couleur.red()     - couleurTexte.red();    rgb.setRed(red);
            green    = couleurTexte.green()- m_couleur.green();     rgb.setGreen(green);
            blue     = m_couleur.blue()    - couleurTexte.blue();   rgb.setBlue(blue);
    
            if(green<100 || val < 50){return true ;}
            else                     {return false;}
        }
    //************************************************************************************************************************************************
        if ( (couleurTexte.red() == m_couleur.red  () && couleurTexte.green() == m_couleur.green())  && couleurTexte.blue() < m_couleur.blue ())
        {
    
            val      = m_couleur.value()   - couleurTexte.value();
            red      = m_couleur.red()     - couleurTexte.red();    rgb.setRed(red);
            green    = m_couleur.green()   - couleurTexte.green();  rgb.setGreen(green);
            blue     = m_couleur.blue()    - couleurTexte.blue();   rgb.setBlue(blue);
    
            if (blue<100 || val < 50){return true ;}
            else                     {return false;}
        }
    
        if ( (couleurTexte.red() == m_couleur.red  () && couleurTexte.green() == m_couleur.green())  && couleurTexte.blue() > m_couleur.blue ())
        {
    
            val      = couleurTexte.value()- m_couleur.value();
            red      = m_couleur.red()     - couleurTexte.red();    rgb.setRed(red);
            green    = m_couleur.green()   - couleurTexte.green();  rgb.setGreen(green);
            blue     = couleurTexte.blue() - m_couleur.blue();      rgb.setBlue(blue);
    
            if (blue<100 || val < 50) {return true ;}
            else                      {return false;}
        }
    //************************************************************************************************************************************************
    
        // Si 2 couleur du texte plus petites que la couleur arrière plan;****************************************************************************
        // Autres couleurs qui ne sont pas que rouge ou que vert ou que bleu;
    
        if ( (couleurTexte.red() < m_couleur.red  () && couleurTexte.green() < m_couleur.green())  && couleurTexte.blue() == m_couleur.blue ())
        {
            red      = m_couleur.red()     - couleurTexte.red();    rgb.setRed(red);
            green    = m_couleur.green()   - couleurTexte.green();  rgb.setGreen(green);
            blue     = m_couleur.blue()    - couleurTexte.blue();   rgb.setBlue(blue);
    
            if(red<100 && green<100){return true ;}
            else                    {return false;}
        }
    
        if ( (couleurTexte.red() > m_couleur.red  () && couleurTexte.green() > m_couleur.green())  && couleurTexte.blue() == m_couleur.blue ())
        {
            red      = couleurTexte.red()  - m_couleur.red();       rgb.setRed(red);
            green    = couleurTexte.green()- m_couleur.green();  rgb.setGreen(green);
            blue     = m_couleur.blue()    - couleurTexte.blue();   rgb.setBlue(blue);
    
            if(red<100 && green<100){return true ;}
            else                    {return false;}
        }
    //************************************************************************************************************************************************
    
        if ( (couleurTexte.red() == m_couleur.red  () && couleurTexte.green() < m_couleur.green())  && couleurTexte.blue() < m_couleur.blue ())
        {
            red      = m_couleur.red()     - couleurTexte.red();    rgb.setRed(red);
            green    = m_couleur.green()   - couleurTexte.green();  rgb.setGreen(green);
            blue     = m_couleur.blue()    - couleurTexte.blue();   rgb.setBlue(blue);
    
            if(green<100 && blue<100){return true;}
            else                     {return false;}
        }
    
        if ( (couleurTexte.red() == m_couleur.red  () && couleurTexte.green() > m_couleur.green())  && couleurTexte.blue() > m_couleur.blue ())
        {
            red      = m_couleur.red()     - couleurTexte.red();    rgb.setRed(red);
            green    = couleurTexte.green()- m_couleur.green();     rgb.setGreen(green);
            blue     = couleurTexte.blue() - m_couleur.blue();      rgb.setBlue(blue);
    
            if(green<100 && blue<100){return true;}
            else                     {return false;}
        }
    //************************************************************************************************************************************************
    
        if ( (couleurTexte.red() < m_couleur.red  () && couleurTexte.green() == m_couleur.green())  && couleurTexte.blue() < m_couleur.blue ())
        {
            red      = m_couleur.red()     - couleurTexte.red();    rgb.setRed(red);
            green    = m_couleur.green()   - couleurTexte.green();  rgb.setGreen(green);
            blue     = m_couleur.blue()    - couleurTexte.blue();   rgb.setBlue(blue);
    
            if(red<100 && blue<100){return true ;}
            else                   {return false;}
        }
    
        if ( (couleurTexte.red() > m_couleur.red  () && couleurTexte.green() == m_couleur.green())  && couleurTexte.blue() > m_couleur.blue ())
        {
            red      = couleurTexte.red()  - m_couleur.red();       rgb.setRed(red);
            green    = m_couleur.green()   - couleurTexte.green();  rgb.setGreen(green);
            blue     = couleurTexte.blue() - m_couleur.blue();      rgb.setBlue(blue);
    
            if(red<100 && blue<100){return true ;}
            else                   {return false;}
        }
    //************************************************************************************************************************************************
        // Si 3 couleurs du texte plus petites que la couleur arrière plan;***************************************************************************
    
        if ( (couleurTexte.red() < m_couleur.red  () && couleurTexte.green() < m_couleur.green())  && couleurTexte.blue() < m_couleur.blue ())
        {
            red      = m_couleur.red()     - couleurTexte.red();    rgb.setRed(red);
            green    = m_couleur.green()   - couleurTexte.green();  rgb.setGreen(green);
            blue     = m_couleur.blue()    - couleurTexte.blue();   rgb.setBlue(blue);
    
            if( (red<100 && green<100) && blue<100){return true ;}
            else                                   {return false;}
        }
        // Si 3 couleurs du texte plus grandes que la couleur arrière plan;***************************************************************************
    
        if ( (couleurTexte.red() > m_couleur.red  () && couleurTexte.green() > m_couleur.green())  && couleurTexte.blue() > m_couleur.blue ())
        {
            red      = couleurTexte.red()  - m_couleur.red() ;      rgb.setRed(red);
            green    = couleurTexte.green()- m_couleur.green();     rgb.setGreen(green);
            blue     = couleurTexte.blue() - m_couleur.blue();      rgb.setBlue(blue);
    
            if( (red <100 && green <100) && blue <100) {return true ;}
            else                                       {return false;}
        }
    //************************************************************************************************************************************************
        // Si 1 couleur du texte plus petite && 1 plus grande que la couleur arrière plan;
    
        if ( (couleurTexte.red() < m_couleur.red  () && couleurTexte.green() > m_couleur.green())  && couleurTexte.blue() == m_couleur.blue ())
        {
            red      = m_couleur.red()     - couleurTexte.red();    rgb.setRed(red);
            green    = couleurTexte.green()- m_couleur.green();     rgb.setGreen(green);
            blue     = m_couleur.blue()    - couleurTexte.blue();   rgb.setBlue(blue);
    
            if(red<100 && green<100){return true ;}
            else                    {return false;}
        }
    
        if ( (couleurTexte.red() > m_couleur.red  () && couleurTexte.green() < m_couleur.green())  && couleurTexte.blue() == m_couleur.blue ())
        {
            red      = couleurTexte.red()  - m_couleur.red();       rgb.setRed(red);
            green    = m_couleur.green()   - couleurTexte.green();  rgb.setGreen(green);
            blue     = m_couleur.blue()    - couleurTexte.blue();   rgb.setBlue(blue);
    
            if(red<100 && green<100){return true ;}
            else                    {return false;}
    
        }
    //************************************************************************************************************************************************
        if ( (couleurTexte.red() == m_couleur.red  () && couleurTexte.green() < m_couleur.green())  && couleurTexte.blue() > m_couleur.blue ())
        {
            red      = m_couleur.red()     - couleurTexte.red();    rgb.setRed(red);
            green    = m_couleur.green()   - couleurTexte.green();  rgb.setGreen(green);
            blue     = couleurTexte.blue() - m_couleur.blue();      rgb.setBlue(blue);
    
            if(green<100 && blue<100){return true ;}
            else                     {return false;}
        }
    
        if ( (couleurTexte.red() == m_couleur.red  () && couleurTexte.green() > m_couleur.green())  && couleurTexte.blue() < m_couleur.blue ())
        {
            red      = m_couleur.red()     - couleurTexte.red();    rgb.setRed(red);
            green    = couleurTexte.green()- m_couleur.green();     rgb.setGreen(green);
            blue     = m_couleur.blue()    - couleurTexte.blue();   rgb.setBlue(blue);
    
            if(green<100 && blue<100){return true ;}
            else                     {return false;}
        }
    //************************************************************************************************************************************************
        if ( (couleurTexte.red() < m_couleur.red  () && couleurTexte.green() == m_couleur.green())  && couleurTexte.blue() > m_couleur.blue ())
        {
            red      = m_couleur.red()     - couleurTexte.red();    rgb.setRed(red);
            green    = m_couleur.green()   - couleurTexte.green();  rgb.setGreen(green);
            blue     = couleurTexte.blue() - m_couleur.blue();      rgb.setBlue(blue);
    
            if(red<100 && blue<100){return true ;}
            else                   {return false;}
        }
    
        if ( (couleurTexte.red() > m_couleur.red  () && couleurTexte.green() == m_couleur.green())  && couleurTexte.blue() < m_couleur.blue ())
        {
            red      =  couleurTexte.red() - m_couleur.red();       rgb.setRed(red);
            green    = m_couleur.green()   - couleurTexte.green();  rgb.setGreen(green);
            blue     =  m_couleur.blue()   - couleurTexte.blue();   rgb.setBlue(blue);
    
            if(red<100 && blue<100){return true ;}
            else                   {return false;}
        }
    //************************************************************************************************************************************************
        //Si 2 couleurs du texte plus petites && 1 plus grandes que la couleur arrière plan;
    
        if ( (couleurTexte.red() < m_couleur.red  () && couleurTexte.green() < m_couleur.green())  && couleurTexte.blue() > m_couleur.blue ())
        {
            red      = m_couleur.red()     - couleurTexte.red();    rgb.setRed(red);
            green    = m_couleur.green()   - couleurTexte.green();  rgb.setGreen(green);
            blue     = couleurTexte.blue() - m_couleur.blue();      rgb.setBlue(blue);
            if( (red<100 && green<100) && blue<100){return true ;}
            else                                   {return false;}
    
        }
    
        if ( (couleurTexte.red() > m_couleur.red  () && couleurTexte.green() > m_couleur.green())  && couleurTexte.blue() < m_couleur.blue ())
        {
            red      =  couleurTexte.red() - m_couleur.red();       rgb.setRed(red);
            green    = couleurTexte.green()- m_couleur.green();     rgb.setGreen(green);
            blue     =  m_couleur.blue()   - couleurTexte.blue();   rgb.setBlue(blue);
    
            if( (red<100 && green<100) && blue<100){return true ;}
            else                                   {return false;}
        }
    //************************************************************************************************************************************************
    
        if ( (couleurTexte.red() > m_couleur.red  () && couleurTexte.green() < m_couleur.green())  && couleurTexte.blue() < m_couleur.blue ())
        {
            red      =  couleurTexte.red() - m_couleur.red();       rgb.setRed(red);
            green    = m_couleur.green()   - couleurTexte.green();  rgb.setGreen(green);
            blue     =  m_couleur.blue()   - couleurTexte.blue();   rgb.setBlue(blue);
            if( (red<100 && green<100) && blue<100){return true ;}
            else                                   {return false;}
        }
    
        if ( (couleurTexte.red() < m_couleur.red  () && couleurTexte.green() > m_couleur.green())  && couleurTexte.blue() > m_couleur.blue ())
        {
            red      = m_couleur.red()     - couleurTexte.red();    rgb.setRed(red);
            green    = couleurTexte.green()- m_couleur.green();     rgb.setGreen(green);
            blue     = couleurTexte.blue() - m_couleur.blue();      rgb.setBlue(blue);
    
            if( (red<100 && green<100) && blue<100){return true ;}
            else                                   {return false;}
        }
    //************************************************************************************************************************************************
    
        if ( (couleurTexte.red() < m_couleur.red  () && couleurTexte.green() > m_couleur.green())  && couleurTexte.blue() < m_couleur.blue ())
        {
            red      = m_couleur.red()     - couleurTexte.red();    rgb.setRed(red);
            green    = couleurTexte.green()- m_couleur.green();     rgb.setGreen(green);
            blue     = m_couleur.blue()    - couleurTexte.blue();   rgb.setBlue(blue);
    
            if( (red<100 && green<100) && blue<100){return true ;}
            else                                   {return false;}
        }
    
        if ( (couleurTexte.red() > m_couleur.red  () && couleurTexte.green() < m_couleur.green())  && couleurTexte.blue() > m_couleur.blue ())
        {
            red      = couleurTexte.red()  - m_couleur.red();       rgb.setRed(red);
            green    = m_couleur.green()   - couleurTexte.green();  rgb.setGreen(green);
            blue     = couleurTexte.blue() - m_couleur.blue();      rgb.setBlue(blue);
    
            if( (red<100 && green<100) && blue<100){return true ;}
            else                                   {return false;}
        }
    //************************************************************************************************************************************************
    // 26 conditions pour tester tout les cas de figure rgb +1 dans rgb == total 27 donc 3x3x3=27 on a traiter toutes les possibilités;***************
    //************************************************************************************************************************************************
    
    
    else
        {
            return false;}
        }
    
    void Fenetre::bigTexteCouleurInverse(QColor &couleurTexte)
    
    {        // Methode la plus cool de ce code =D on inverse le RGB, c'est facile! ( avec un peu de lecture sur Google pour savoir comment c'est fait une couleur dans un ordinateur);
    
    
        int rougeInverse { 255 - couleurTexte.red  () };
        int vertInverse  { 255 - couleurTexte.green() };
        int bleuInverse  { 255 - couleurTexte.blue () };
    
        couleurTexte.setRed    (rougeInverse);
        couleurTexte.setGreen  (vertInverse) ;
        couleurTexte.setBlue   (bleuInverse) ;
        m_textColorB = couleurTexte;
    
        if(m_curseurBig.hasSelection())
        {
            if(m_bigEditor->textBackgroundColor() != Qt::black)
               {
                  m_bigEditor->setTextColor          (Qt::black);
               }
            else
               {
                  m_bigEditor   ->setTextCursor(m_curseurBig);
                  m_bigEditor   ->setTextColor(couleurTexte);
                  m_bigEditor   ->moveCursor(QTextCursor::Start, QTextCursor::MoveAnchor);
               }
        }
    }
    
    void Fenetre::smallTexteCouleurInverse(QColor &couleurTexte)
    
    {         // 2 methode similaire pour deux QTextEdit;
    
        int rougeInverse { 255 - couleurTexte.red  () };
        int vertInverse  { 255 - couleurTexte.green() };
        int bleuInverse  { 255 - couleurTexte.blue () };
    
        couleurTexte.setRed    (rougeInverse);
        couleurTexte.setGreen  (vertInverse) ;
        couleurTexte.setBlue   (bleuInverse) ;
        m_textColorS = couleurTexte;
    
        if(m_curseurSmall.hasSelection())
        {
            if(m_smallEditor->textBackgroundColor() != Qt::black)
               {
                  m_smallEditor->setTextColor         (Qt::black);
               }
            else
               {
                m_smallEditor   ->setTextCursor(m_curseurSmall);
                m_smallEditor   ->setTextColor(couleurTexte);
                m_smallEditor   ->moveCursor(QTextCursor::Start, QTextCursor::MoveAnchor);
               }
        }
    }
    
    void Fenetre::inverseColorTextBackground(QColor &textBackground)
    
    {// sert à plus rien car finalement je n'inverse plus la couleur surlignage;
        int rougeInverse  {255 - textBackground.red  ()};
        int vertInverse   {255 - textBackground.green()};
        int bleuInverse   {255 - textBackground.blue ()};
    
        textBackground.setRed    (rougeInverse);
        textBackground.setGreen  (vertInverse) ;
        textBackground.setBlue   (bleuInverse) ;
        m_textBackgroundColor = textBackground;
    
        if(m_curseurSmall.hasSelection() || m_curseurBig.hasSelection())
        {
            m_smallEditor         ->setTextCursor(m_curseurSmall);
            m_smallEditor         ->setTextColor(Qt::white);
            m_smallEditor         ->setTextBackgroundColor(textBackground);
            m_smallEditor         ->moveCursor(QTextCursor::Start, QTextCursor::MoveAnchor);
    
            m_bigEditor           ->setTextCursor(m_curseurBig);
            m_bigEditor           ->setTextColor(Qt::white);
            m_bigEditor           ->setTextBackgroundColor(textBackground);
            m_bigEditor           ->moveCursor(QTextCursor::Start, QTextCursor::MoveAnchor);
        }
    }
    
    
    void Fenetre::afficheRGB(QColor const &couleur)
    // Methode qui m'as servit pour m'aider à debug les méthodes précédente, elle est cool aussi, affiche le code rgb du texte de QTextEdit dans un QMessageBox;
    
    {
        int rouge  { couleur.red()   };
        int vert   { couleur.green() };
        int bleu   { couleur.blue()  };
    
        QString rgb = QString::number(rouge) + "." + QString::number(vert) + "." + QString::number(bleu);
        QMessageBox::information(this, tr("Color"), tr("rgb text color : ") + rgb);
    }
    
    void Fenetre::message(int const index)
    
    {
    
         if(index == 1)
         {
           QMessageBox::information(this, "QComboBox", tr("Ah! A good fried steak!"));
         }
    
         if(index == 2)
         {
           QMessageBox::information(this, "QComboBox", tr("Creamy broccoli ?!"));
         }
    
         if(index == 3)
         {
           QMessageBox::information(this, "QComboBox", tr("Too bad, so take beans!"));
         }
    }
    
    void Fenetre::easterEggs()
    
    {
        QMessageBox::information(this, tr("Blue Pantone"), "Géronimo !     ");
    
    
        m_smallEditor->clear();
        m_smallEditor->setPlainText("   Silence will fall when    \n  the question is asked   \n\n\n On the Fields of Trenzalore,\nat the fall of the Eleventh,\nwhen no living creature\n can speak falsely\n or \nfail to answer,\n a question will be asked\n\n  a question that must never ever be answered:\n\n \"Doctor who?\"");
        m_smallEditor->selectAll();
        m_smallEditor->setAlignment(Qt::AlignCenter);
        m_police     .setFamily("Courier New");
        m_police     .setPointSize(10);
        m_police     .setBold(true);
        m_smallEditor->setFont(m_police);
        m_smallEditor->setTextColor(Qt::white);
        m_smallEditor->moveCursor(QTextCursor::Start);
        m_police     .setBold(false);
    
        m_bigEditor  ->clear();      //Ici pas besoin de traduction !;
        m_bigEditor  ->setPlainText("    POLICE TELEPHONE   \n                       \n          FREE         \n       FOR USE OF      \n         PUBLIC        \n                       \n  ADVICE & ASSISTANCE  \n OBTAINABLE IMMEDIATLY \n     OFFICER & CARS    \n  RESPOND TO ALL CALLS \n                       \n      PULL TO OPEN     ");
        m_bigEditor  ->selectAll();
        m_police     .setPointSize(12);
        m_bigEditor  ->setFont(m_police);
    
        m_bigEditor  ->moveCursor(QTextCursor::Start);
        for (int i{0}; i<2; ++i) {m_bigEditor->moveCursor(QTextCursor::Down, QTextCursor::KeepAnchor);}
    
        m_bigEditor->moveCursor(QTextCursor::StartOfLine, QTextCursor::MoveAnchor);
        m_bigEditor->moveCursor(QTextCursor::EndOfLine  , QTextCursor::KeepAnchor);
    
        m_police     .setBold(true);
        QTextCharFormat format; format.setFont(m_police);
        m_bigEditor  ->textCursor().mergeCharFormat(format);
    
        for (int i{0}; i<2; ++i) {m_bigEditor->moveCursor(QTextCursor::Down, QTextCursor::KeepAnchor);}
    
        m_bigEditor->moveCursor(QTextCursor::StartOfLine, QTextCursor::MoveAnchor);
        m_bigEditor->moveCursor(QTextCursor::EndOfLine  , QTextCursor::KeepAnchor);
    
        m_bigEditor  ->textCursor().mergeCharFormat(format);
    
        for (int i{0}; i<7; ++i) {m_bigEditor->moveCursor(QTextCursor::Down, QTextCursor::MoveAnchor);}
    
        m_bigEditor->moveCursor(QTextCursor::StartOfLine, QTextCursor::MoveAnchor);
        m_bigEditor->moveCursor(QTextCursor::EndOfLine  , QTextCursor::KeepAnchor);
    
        m_bigEditor  ->textCursor().mergeCharFormat(format);
    
    
    
        m_bigEditor  ->selectAll();
        m_bigEditor  ->setTextBackgroundColor(Qt::white);
        m_bigEditor  ->moveCursor(QTextCursor::Start);
    
       m_boutons[0]->setText("POLICE");
       m_boutons[0]->setStyleSheet("background-color : black; color : white; font-weight: bold;");
    
       m_boutons[1]->setText("public");
       m_boutons[1]->setStyleSheet("background-color : black; color : white;");
    
       m_boutons[2]->setText("call");
       m_boutons[2]->setStyleSheet("background-color : black; color : white;");
    
       m_boutons[3]->setText("BOX");
       m_boutons[3]->setStyleSheet("background-color : black; color : white; font-weight: bold;");
    
        m_lineEdits[0]->setText("you are beautiful");
        m_lineEdits[1]->setText("bow ties ’are cool!");
        m_lineEdits[2]->setText("Fish sticks and custard");
        m_qLineEdit[0].setText("Never be cruel, never be cowardly. And never ever eat pears !");
        QStringList liste;
        liste.append("Never trust a hug, it's just a way to hide your face.");
        m_Box->clear();
        m_Box->addItems(liste);
        m_spinBox->setValue(16);
    } //#003b6f
    
    

    MAIN

    #include <QApplication>
    #include <QTranslator>
    #include <QLocale>
    #include <QLibraryInfo>
    #include "Fenetre.h"
    
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
    
           //QString locale = QLocale::system().name().section('_', 0, 0);
           QTranslator translator;
    
           translator.load("trFenetre_fr",QLibraryInfo::location(QLibraryInfo::TranslationsPath));
           app.installTranslator(&translator);
    
    
        Fenetre fenetre;
    
    
    
        fenetre.show();
    
        return app.exec();
    }
    
    

    traduction . ts car je sait pas publier le . qm

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE TS>
    <TS version="2.1" language="fr_FR">
    <context>
        <name>Fenetre</name>
        <message>
            <location filename="Fenetre.cpp" line="91"/>
            <source>This is a great text editor in case you haven&apos;t seen it!</source>
            <translation>Ceci est un grand editeur de texte au cas ou vous ne l&apos;auriez pas vu!</translation>
        </message>
        <message>
            <location filename="Fenetre.cpp" line="112"/>
            <source>Basic Layout</source>
            <translation>Disposition de base</translation>
        </message>
        <message>
            <location filename="Fenetre.cpp" line="124"/>
            <source>&amp;File</source>
            <translation>&amp;Fichier</translation>
        </message>
        <message>
            <location filename="Fenetre.cpp" line="125"/>
            <source>E&amp;xit</source>
            <translation>&amp;Quitter</translation>
        </message>
        <message>
            <location filename="Fenetre.cpp" line="137"/>
            <source>QHBoxLayout : Horizontal layout</source>
            <translation>Disposition horizontale</translation>
        </message>
        <message>
            <location filename="Fenetre.cpp" line="143"/>
            <source>Button %1</source>
            <translation>Boutton %1</translation>
        </message>
        <message>
            <location filename="Fenetre.cpp" line="149"/>
            <location filename="Fenetre.cpp" line="243"/>
            <source>Font</source>
            <translation>Police</translation>
        </message>
        <message>
            <location filename="Fenetre.cpp" line="150"/>
            <location filename="Fenetre.cpp" line="282"/>
            <location filename="Fenetre.cpp" line="339"/>
            <location filename="Fenetre.cpp" line="370"/>
            <location filename="Fenetre.cpp" line="965"/>
            <source>Color</source>
            <translation>Couleur</translation>
        </message>
        <message>
            <location filename="Fenetre.cpp" line="151"/>
            <location filename="Fenetre.cpp" line="411"/>
            <source>Highlight</source>
            <translation>Surligner</translation>
        </message>
        <message>
            <location filename="Fenetre.cpp" line="152"/>
            <source>Background Color</source>
            <translation>Couleur arrière plan</translation>
        </message>
        <message>
            <location filename="Fenetre.cpp" line="167"/>
            <source>QGridLayout : Grid layout</source>
            <translation>Disposition grille</translation>
        </message>
        <message>
            <location filename="Fenetre.cpp" line="173"/>
            <source>line %1</source>
            <translation>ligne %1</translation>
        </message>
        <message>
            <location filename="Fenetre.cpp" line="181"/>
            <source>Hello</source>
            <translation>Bonjour</translation>
        </message>
        <message>
            <location filename="Fenetre.cpp" line="187"/>
            <source>If you write small, you can write here</source>
            <translation>Si vous écrivez petit, vous pouvez écrire ici</translation>
        </message>
        <message>
            <location filename="Fenetre.cpp" line="202"/>
            <source>I love Belgian fries!</source>
            <translation>J&apos;adore les frites belges!</translation>
        </message>
        <message>
            <location filename="Fenetre.cpp" line="203"/>
            <source>I love broccoli!</source>
            <translation>J&apos;adore le brocoli!</translation>
        </message>
        <message>
            <location filename="Fenetre.cpp" line="204"/>
            <source>I don&apos;t like fries or broccoli!</source>
            <translation>Je n&apos;aime ni les frites ni le brocoli!</translation>
        </message>
        <message>
            <location filename="Fenetre.cpp" line="209"/>
            <source>QFormLayout : Form layout</source>
            <translation>Disposition de forme</translation>
        </message>
        <message>
            <location filename="Fenetre.cpp" line="212"/>
            <source>Line 1 :</source>
            <translation>Ligne 1 :</translation>
        </message>
        <message>
            <location filename="Fenetre.cpp" line="213"/>
            <source>Line 2, Long text :</source>
            <translation>Ligne 2, Long texte :</translation>
        </message>
        <message>
            <location filename="Fenetre.cpp" line="214"/>
            <source>Line 3 :</source>
            <translation>Ligne 3 :</translation>
        </message>
        <message>
            <location filename="Fenetre.cpp" line="243"/>
            <location filename="Fenetre.cpp" line="370"/>
            <location filename="Fenetre.cpp" line="411"/>
            <source>Please select some text first.</source>
            <translation>Veuillez d&apos;abord sélectionner du texte.</translation>
        </message>
        <message>
            <location filename="Fenetre.cpp" line="282"/>
            <location filename="Fenetre.cpp" line="339"/>
            <source>The chosen color is not of good visibility on this background, if the background is light please darken your color or select another one, if the background is dark please lighten your color or select another one. if you don&apos;t want to, stop using the QTextEdit right away!</source>
            <translation>La couleur choisie n&apos;est pas d&apos;une bonne visibilité sur ce fond, si le fond est clair veuillez foncer votre couleur ou en sélectionner une autre, si le fond est foncé veuillez éclaircir votre couleur ou en sélectionner une autre. si vous n&apos;en avez pas envie, arrêtez tout de suite l&apos;utilisation du QTextEdit !</translation>
        </message>
        <message>
            <location filename="Fenetre.cpp" line="547"/>
            <source>You have to know what you want!</source>
            <translation>Il faut savoir ce que vous voulez !</translation>
        </message>
        <message>
            <location filename="Fenetre.cpp" line="965"/>
            <source>rgb text color : </source>
            <translation>Couleur RGB du texte : </translation>
        </message>
        <message>
            <location filename="Fenetre.cpp" line="974"/>
            <source>Ah! A good fried steak!</source>
            <translation>Ah un bon steak frite !</translation>
        </message>
        <message>
            <location filename="Fenetre.cpp" line="979"/>
            <source>Creamy broccoli ?!</source>
            <translation>Brocolis à la crème ?!</translation>
        </message>
        <message>
            <location filename="Fenetre.cpp" line="984"/>
            <source>Too bad, so take beans!</source>
            <translation>Dommage, alors prennez des haricot !</translation>
        </message>
        <message>
            <location filename="Fenetre.cpp" line="991"/>
            <source>Blue Pantone</source>
            <translation>Bleu Pantone</translation>
        </message>
    </context>
    </TS>
    

    Voila voila, j'espère que je vous dérange pas trop avec ça, bonne journée à tous .






    • Partager sur Facebook
    • Partager sur Twitter

    for ( size_t nbMembre  :  membreForum )   { std::cout << "Bonjour ! \n"; }

    évaluation projet Qt

    × 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