Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. French
  4. syntaxe à comprendre
Forum Updated to NodeBB v4.3 + New Features

syntaxe à comprendre

Scheduled Pinned Locked Moved Unsolved French
8 Posts 3 Posters 1.3k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Offline
    S Offline
    signalK
    wrote on last edited by signalK
    #1

    bonjour,

    Un prof de Qt pour débutants a codé ceci:

    #include <QtGui>
    #include <QtWidgets>
    
    stopBout = new QPushButton(tr("&Arret"));
    
    

    pourquoi il n'a pas écrit?:

    #include <QtGui>
    #include <QtWidgets>
    
    stopBout = new QPushButton(tr("Arret"));
    

    de même,il a codé:

    #include <QtGui>
    #include <QtWidgets>
    
    QPushButton * stopBout = new QPushButton("&Arret");
    
    

    pourquoi il n'a pas écrit?:

    #include <QtGui>
    #include <QtWidgets>
    
    QPushButton * stopBout = new QPushButton("Arret");
    
    

    merci de votre aide

    SGaistS Axel SpoerlA 2 Replies Last reply
    0
    • S signalK

      bonjour,

      Un prof de Qt pour débutants a codé ceci:

      #include <QtGui>
      #include <QtWidgets>
      
      stopBout = new QPushButton(tr("&Arret"));
      
      

      pourquoi il n'a pas écrit?:

      #include <QtGui>
      #include <QtWidgets>
      
      stopBout = new QPushButton(tr("Arret"));
      

      de même,il a codé:

      #include <QtGui>
      #include <QtWidgets>
      
      QPushButton * stopBout = new QPushButton("&Arret");
      
      

      pourquoi il n'a pas écrit?:

      #include <QtGui>
      #include <QtWidgets>
      
      QPushButton * stopBout = new QPushButton("Arret");
      
      

      merci de votre aide

      SGaistS Offline
      SGaistS Offline
      SGaist
      Lifetime Qt Champion
      wrote on last edited by
      #2

      Bonsoir,

      Afin de pouvoir les accélérateurs claviers.

      Interested in AI ? www.idiap.ch
      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

      1 Reply Last reply
      2
      • S signalK

        bonjour,

        Un prof de Qt pour débutants a codé ceci:

        #include <QtGui>
        #include <QtWidgets>
        
        stopBout = new QPushButton(tr("&Arret"));
        
        

        pourquoi il n'a pas écrit?:

        #include <QtGui>
        #include <QtWidgets>
        
        stopBout = new QPushButton(tr("Arret"));
        

        de même,il a codé:

        #include <QtGui>
        #include <QtWidgets>
        
        QPushButton * stopBout = new QPushButton("&Arret");
        
        

        pourquoi il n'a pas écrit?:

        #include <QtGui>
        #include <QtWidgets>
        
        QPushButton * stopBout = new QPushButton("Arret");
        
        

        merci de votre aide

        Axel SpoerlA Offline
        Axel SpoerlA Offline
        Axel Spoerl
        Moderators
        wrote on last edited by
        #3

        @signalK said in syntaxe à comprendre:

        Un prof de Qt pour débutants a codé ceci:

        #include <QtGui>
        #include <QtWidgets>
        
        stopBout = new QPushButton(tr("&Arret"));
        

        Juste par curiosité : Est-ce qu'il a compilé ? Parce que je ne vois pas la déclaration de stopBout.

        Vous pouvez laisser tomber #include <QtGui>, car <QtWidgets> le contient déjà. Et, en fait, le prof aurait dû vous expliquer ce que sont les accélérateurs de clavier...

        Software Engineer
        The Qt Company, Oslo

        S 1 Reply Last reply
        0
        • Axel SpoerlA Axel Spoerl

          @signalK said in syntaxe à comprendre:

          Un prof de Qt pour débutants a codé ceci:

          #include <QtGui>
          #include <QtWidgets>
          
          stopBout = new QPushButton(tr("&Arret"));
          

          Juste par curiosité : Est-ce qu'il a compilé ? Parce que je ne vois pas la déclaration de stopBout.

          Vous pouvez laisser tomber #include <QtGui>, car <QtWidgets> le contient déjà. Et, en fait, le prof aurait dû vous expliquer ce que sont les accélérateurs de clavier...

          S Offline
          S Offline
          signalK
          wrote on last edited by signalK
          #4

          voici le code complet:

          // exemple plus evolue du debut d'un editeur de texte
          #include <QtGui>
          #include <QtWidgets>
          
          int main(int N, char *P[])
          {
             // on cree une application graphique app
             QApplication app(N, P);
             // on ajoute un objet pour saisir du texte et on le rend visible
             QTextEdit *texte = new QTextEdit;
             // on ajoute un bouton poussoir (QPushButton) pour fermer la fenetre
             QPushButton * stopBout = new QPushButton("&Arret");
             // on connecte le bouton avec la methode heritee de la classe QObject
             QObject::connect(stopBout, SIGNAL(clicked()), qApp, SLOT(quit()));
             // on definit un gestionnaire de zone d'affichage type boite verticale
             QVBoxLayout * gestZone = new QVBoxLayout;
             gestZone->addWidget(texte);
             gestZone->addWidget(stopBout);
             // on ajoute un QWidget fenetre pour y mettre le gestZone
             QWidget fenetre;
             fenetre.setLayout(gestZone);
             fenetre.show();
             // on lance l'application et on recupere le code retour pour terminer le
             // programme
             return app.exec();
          }
          

          voici l'autre code complet:

          // editeur.cpp : code de la classe Editeur
          #include "editeur.h"
          
          Editeur::Editeur()
          {
             texte = new QTextEdit;
             stopBout = new QPushButton(tr("&Arret"));
             connect(stopBout, SIGNAL(clicked()), this, SLOT(quit()));
             QVBoxLayout * gz = new QVBoxLayout;
             gz->addWidget(texte);
             gz->addWidget(stopBout);
             setLayout(gz);
             setWindowTitle(tr("Editeur"));
          }
          
          void Editeur::quit()
          {
             // On utilise une boite a question pour demander une validation de fin
             // on va prendre la classe QMessageBox
             QMessageBox messageBox;
             messageBox.setWindowTitle(tr("Editeur"));
             messageBox.setText(tr("Voulez-vous vraiment quitter ?"));
             messageBox.setStandardButtons( QMessageBox::Yes | QMessageBox::No );
             messageBox.setDefaultButton(QMessageBox::No);
             if (messageBox.exec() == QMessageBox::Yes) qApp->quit();
          }
          

          non non le prof nous a pas parlé d'accélérateurs claviers.
          Qu'est-ce que c'est?
          Ah oui ! j'ai trouvé ceci:
          https://www.digitalfanatics.org/projects/qt_tutorial/fr/chapter07.html

          mentionnant ceci:
          Les caractères & indique à Qt de souligner le caractère suivant et de l'employer comme raccourci clavier.

          1)Donc le prof aurait pu se passer de souligner le caractère suivant pour l'utiliser un raccourci et coder sans écrire le &.

          La fonction tr est définie comme ceci:

          QString	tr(const char *sourceText, const char *disambiguation = nullptr, int n = -1)
          

          le 1er argument cons char*sourceText est une chaîne de caractères et peut bien se passer de &.
          Est-ce bien cela?

          2)Si la fonction tr est utlisée comme ceci:

           stopBout = new QPushButton(tr("&Arret"));
          

          où le constructeur QPushButton de la classe QObject est défini comme ceci:

          QPushButton(QWidget *parent = nullptr)
          

          tr doit renvoyer un pointeur de type Qwidget
          Où cela dans la doc est-il indiqué que tr renvoie un pointeur de type QWidget?

          Axel SpoerlA 1 Reply Last reply
          0
          • S signalK

            voici le code complet:

            // exemple plus evolue du debut d'un editeur de texte
            #include <QtGui>
            #include <QtWidgets>
            
            int main(int N, char *P[])
            {
               // on cree une application graphique app
               QApplication app(N, P);
               // on ajoute un objet pour saisir du texte et on le rend visible
               QTextEdit *texte = new QTextEdit;
               // on ajoute un bouton poussoir (QPushButton) pour fermer la fenetre
               QPushButton * stopBout = new QPushButton("&Arret");
               // on connecte le bouton avec la methode heritee de la classe QObject
               QObject::connect(stopBout, SIGNAL(clicked()), qApp, SLOT(quit()));
               // on definit un gestionnaire de zone d'affichage type boite verticale
               QVBoxLayout * gestZone = new QVBoxLayout;
               gestZone->addWidget(texte);
               gestZone->addWidget(stopBout);
               // on ajoute un QWidget fenetre pour y mettre le gestZone
               QWidget fenetre;
               fenetre.setLayout(gestZone);
               fenetre.show();
               // on lance l'application et on recupere le code retour pour terminer le
               // programme
               return app.exec();
            }
            

            voici l'autre code complet:

            // editeur.cpp : code de la classe Editeur
            #include "editeur.h"
            
            Editeur::Editeur()
            {
               texte = new QTextEdit;
               stopBout = new QPushButton(tr("&Arret"));
               connect(stopBout, SIGNAL(clicked()), this, SLOT(quit()));
               QVBoxLayout * gz = new QVBoxLayout;
               gz->addWidget(texte);
               gz->addWidget(stopBout);
               setLayout(gz);
               setWindowTitle(tr("Editeur"));
            }
            
            void Editeur::quit()
            {
               // On utilise une boite a question pour demander une validation de fin
               // on va prendre la classe QMessageBox
               QMessageBox messageBox;
               messageBox.setWindowTitle(tr("Editeur"));
               messageBox.setText(tr("Voulez-vous vraiment quitter ?"));
               messageBox.setStandardButtons( QMessageBox::Yes | QMessageBox::No );
               messageBox.setDefaultButton(QMessageBox::No);
               if (messageBox.exec() == QMessageBox::Yes) qApp->quit();
            }
            

            non non le prof nous a pas parlé d'accélérateurs claviers.
            Qu'est-ce que c'est?
            Ah oui ! j'ai trouvé ceci:
            https://www.digitalfanatics.org/projects/qt_tutorial/fr/chapter07.html

            mentionnant ceci:
            Les caractères & indique à Qt de souligner le caractère suivant et de l'employer comme raccourci clavier.

            1)Donc le prof aurait pu se passer de souligner le caractère suivant pour l'utiliser un raccourci et coder sans écrire le &.

            La fonction tr est définie comme ceci:

            QString	tr(const char *sourceText, const char *disambiguation = nullptr, int n = -1)
            

            le 1er argument cons char*sourceText est une chaîne de caractères et peut bien se passer de &.
            Est-ce bien cela?

            2)Si la fonction tr est utlisée comme ceci:

             stopBout = new QPushButton(tr("&Arret"));
            

            où le constructeur QPushButton de la classe QObject est défini comme ceci:

            QPushButton(QWidget *parent = nullptr)
            

            tr doit renvoyer un pointeur de type Qwidget
            Où cela dans la doc est-il indiqué que tr renvoie un pointeur de type QWidget?

            Axel SpoerlA Offline
            Axel SpoerlA Offline
            Axel Spoerl
            Moderators
            wrote on last edited by
            #5

            @signalK
            Le code utilise ce constructeur QPushButton :

            explicit QPushButton(const QString &text, QWidget *parent = nullptr);
            

            Par ailleurs, la syntaxe de connexion utilisée dans le code est obsolète depuis de nombreuses années déjà. Il utilise une conversion de string coûteuse au moment de l'exécution:

            QObject::connect(stopBout, SIGNAL(clicked()), qApp, SLOT(quit()));
            

            Bien que notre propre code l'utilise encore, nous le remplaçons dans la mesure du possible par une version bien meilleure qui utilise des fonctions de type "pointer-to-member-function":

            QObject::connect(stopBout, &QPushButton::clicked, qApp, &QApplication::quit);
            

            C'est beaucoup plus rapide, il n'y a pas besoin de traduction en cours d'exécution et vous pouvez vérifier la syntaxe dans l'éditeur. Salutations au prof...

            Software Engineer
            The Qt Company, Oslo

            S 1 Reply Last reply
            0
            • Axel SpoerlA Axel Spoerl

              @signalK
              Le code utilise ce constructeur QPushButton :

              explicit QPushButton(const QString &text, QWidget *parent = nullptr);
              

              Par ailleurs, la syntaxe de connexion utilisée dans le code est obsolète depuis de nombreuses années déjà. Il utilise une conversion de string coûteuse au moment de l'exécution:

              QObject::connect(stopBout, SIGNAL(clicked()), qApp, SLOT(quit()));
              

              Bien que notre propre code l'utilise encore, nous le remplaçons dans la mesure du possible par une version bien meilleure qui utilise des fonctions de type "pointer-to-member-function":

              QObject::connect(stopBout, &QPushButton::clicked, qApp, &QApplication::quit);
              

              C'est beaucoup plus rapide, il n'y a pas besoin de traduction en cours d'exécution et vous pouvez vérifier la syntaxe dans l'éditeur. Salutations au prof...

              S Offline
              S Offline
              signalK
              wrote on last edited by
              #6

              je ne comprends toujours pas.Quand est écrit dans la doc ceci:

              QString	tr(const char *sourceText, const char *disambiguation = nullptr, int n = -1)
              

              tr renvoie quoi ou quel type?

              SGaistS S 2 Replies Last reply
              0
              • S signalK

                je ne comprends toujours pas.Quand est écrit dans la doc ceci:

                QString	tr(const char *sourceText, const char *disambiguation = nullptr, int n = -1)
                

                tr renvoie quoi ou quel type?

                SGaistS Offline
                SGaistS Offline
                SGaist
                Lifetime Qt Champion
                wrote on last edited by
                #7

                Comme la signature l'indique: un QString.

                Interested in AI ? www.idiap.ch
                Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                1 Reply Last reply
                0
                • S signalK

                  je ne comprends toujours pas.Quand est écrit dans la doc ceci:

                  QString	tr(const char *sourceText, const char *disambiguation = nullptr, int n = -1)
                  

                  tr renvoie quoi ou quel type?

                  S Offline
                  S Offline
                  signalK
                  wrote on last edited by signalK
                  #8

                  merci
                  j'ai compris mon erreur(mauvais constructeur choisi pour la classe QPushButton)
                  le bon constructeur est:

                  QPushButton(const QString &text, QWidget *parent = nullptr)
                  

                  qui attend en paramètre un texte de type QString donc tr est valable en tant que paramètre car renvoie un QString

                  1 Reply Last reply
                  0

                  • Login

                  • Login or register to search.
                  • First post
                    Last post
                  0
                  • Categories
                  • Recent
                  • Tags
                  • Popular
                  • Users
                  • Groups
                  • Search
                  • Get Qt Extensions
                  • Unsolved