Partage
  • Partager sur Facebook
  • Partager sur Twitter

[QT] Création de menus

Sujet résolu
    6 juillet 2007 à 17:11:17

    (re)Salut, :)

    J'essaye de créer des menus comme celui-ci mais je n'y arrive pas. J'obteins ceci :
    Image utilisateur

    Voici le code :
    QMenuBar *menu = new QMenuBar(&window);
        QMenu *quit = new QMenu("&Quitter", &window);
        menu->addMenu(quit);


    Merci de vos réponses
    • Partager sur Facebook
    • Partager sur Twitter
      6 juillet 2007 à 18:09:35

      Bonjour,
      si tu travailles dans un QMainWindow, regardes la fonction menuBar()
      Un exemple issu d'un de mes programmes Qt
      void Editor::createMenus()
      {
              // Création du menu: Fichier
              QMenu *fileMenu = new QMenu(tr("&Fichier"), this);
              fileMenu->addAction(newAct);
              fileMenu->addAction(openAct);
              fileMenu->addAction(saveAct);
              fileMenu->addAction(saveAsAct);
              fileMenu->addSeparator();
              fileMenu->addAction(exitAct);

              // Création du menu ?
              QMenu *helpMenu = new QMenu(tr("&?"), this);
              helpMenu->addAction(aboutAct);

              // Ajout des menus à la barre de menu
              menuBar()->addMenu(fileMenu);
              menuBar()->addMenu(helpMenu);
      }

      Amicalement Mercosuh ;)
      • Partager sur Facebook
      • Partager sur Twitter
        6 juillet 2007 à 18:21:34

        "menuBar() undeclared"

        On peut pas faire autrement?
        • Partager sur Facebook
        • Partager sur Twitter
          6 juillet 2007 à 18:25:18

          J'ai bien l'impression que ce que tu fais c'est une boite de dialogue. Faut utiliser QMainWindow et bien sur réserver une zone à ta barre de menu.
          • Partager sur Facebook
          • Partager sur Twitter
            7 juillet 2007 à 12:20:11

            Bonjour, pourrez ton voir le code en entier ?
            • Partager sur Facebook
            • Partager sur Twitter
              7 juillet 2007 à 13:35:25

              Voici mon code :
              #include <QApplication>
              #include <QWidget>
              #include <QPushButton>
              #include <QTextEdit>
              #include <QFont>
              #include <QMenu>
              #include <QMenuBar>
              #include <QAction>



              int main(int argc,char** argv)
              {
                  QApplication app(argc, argv);
                 
                  QWidget window;
                  window.resize(400, 300);
                 
                  QFont font("arial", 25, -1, false);
                 
                  QTextEdit text("abc",&window), edit("Marque ton nom : ", &window);
                  text.setReadOnly(false);
                  text.setGeometry(50, 40, 300, 50);
                  text.setFont(font);
                  edit.setGeometry(50, 200, 300, 50);
                 
                  QPushButton /*clear("Clear text", &window),*/ copy("Copy text", &window), quit("Quit", &window), paste("Paste text", &window);
                  QPushButton clear2("Clear text", &window);
                  //clear.setGeometry(163, 65, 75, 30);
                  copy.setGeometry(50, 115, 75, 30);
                  quit.setGeometry(238+(163-(50+75)), 115, 74, 30);
                  paste.setGeometry(163, 115, 75, 30);
                  clear2.setGeometry(163, 160, 75, 30);
                 
                  //QObject::connect(&clear, SIGNAL(clicked()), &text, SLOT(clear()));
                  QObject::connect(&clear2, SIGNAL(clicked()), &edit, SLOT(clear()));
                  QObject::connect(&copy, SIGNAL(clicked()), &edit, SLOT(copy()));
                  QObject::connect(&paste, SIGNAL(clicked()), &text, SLOT(paste()));
                  QObject::connect(&quit, SIGNAL(clicked()), &app, SLOT(quit()));
                 
                  QMenuBar *menu = new QMenuBar(&window);
                  QMenu *file = new QMenu("&File", &window);
                  menu->addMenu(file);
                  menu->addMenu("Exit");
                 
                 
                 
                 
                  window.show();
                  return app.exec();
              }



              Image utilisateur
              • Partager sur Facebook
              • Partager sur Twitter
                7 juillet 2007 à 19:54:30

                Ouais, c'est vraiment pas terrible de mettre des Widgets enfants dans un widget parent.
                Une boite de dialogue c'est mieux, et si tu veux mettre une barre de menu une Fenetre principale c'est encore mieux.
                Là je t'invite à te rendre... dans la DOC et oui je sais c'est chiant mais faut, parce que je vais pas te pondre un code à ta place ;) .
                • Partager sur Facebook
                • Partager sur Twitter
                  7 juillet 2007 à 20:26:15

                  Salut gogeta1 :) ,

                  J'ai eu dejà eu le même problème que toi ;) et comme UltimAKnighT , la solution (je ne dis pas que c'est la seule) repose sur l'utilisation d'un QMainWindow

                  Tu as deux fonctions dans cette classe qui permet d'associer un QWidget au widget central ("setCentralWidget(QWidget*)" il me semble ;) ), et une autre pour associer un QMenuBar à la barre de menu ("setMenuBar(QMenuBar*)", encore une fois il me semble ;) , mais il faudra que tu confirme ça toi même en allant jeter un coup d'oeil dans la doc).

                  De manière générale, tu peux ensuite créer un QWidget parent (qui contiendrait tout tes boutons), un QMenuBar avec des QMenu et des QAction, et de les associer à tn QMainWindow

                  Bonne chance ;)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    7 juillet 2007 à 20:59:49

                    Merci ... J'avais oublié de mettre QMainWindow en héritage (je c'est pas si on le dit comme ça).

                    Merci encore ...
                    • Partager sur Facebook
                    • Partager sur Twitter
                      7 mars 2008 à 21:18:54

                      bonjour
                      dans ce code :
                      1. QObject::connect(&clear2, SIGNAL(clicked()), &edit, SLOT(clear()));
                      2.     QObject::connect(&copy, SIGNAL(clicked()), &edit, SLOT(copy()));
                      3.     QObject::connect(&paste, SIGNAL(clicked()), &text, SLOT(paste()));
                      4.     QObject::connect(&quit, SIGNAL(clicked()), &app, SLOT(quit()));


                      pourquoi les variable copy, paste, ... sont envoyées en référence?
                      • Partager sur Facebook
                      • Partager sur Twitter
                      :)
                        7 mars 2008 à 21:21:18

                        Citation : moii

                        pourquoi les variable copy, paste, ... sont envoyées en référence?


                        elles sont pas envoyées en référence (ce qui ne veux rien dire) c'est simplement comme en C pour avoir l'adresse de la variable (vu que connect attend des pointeurs)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          7 mars 2008 à 21:23:34

                          Ok donc je vais aller voir dans la doc.
                          Merci!
                          • Partager sur Facebook
                          • Partager sur Twitter
                          :)

                          [QT] Création de menus

                          × 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