Partage
  • Partager sur Facebook
  • Partager sur Twitter

Aide QT

Sujet résolu
    8 mai 2008 à 12:14:44

    Bon voila, j'ai une interface a faire pour un projet en QT, mais je galere pas mal (moi et les interfaces, on a toujours eu des différents ^^)
    Alors voila un petit code tout simple, et j'aimerai savoir pourquoi le menu ne s'affiche pas:


    Citation : fenetre.h

    #ifndef DEF_MAFENETRE
    #define DEF_MAFENETRE

    #include <QApplication>
    #include <QWidget>
    #include <QPushButton>
    #include <QMenuBar>
    #include <QMenu>
    #include <QFrame>
    #include <QTabWidget>

    class MonMenu : public QMenuBar
    {
    public:
    MonMenu();

    private:
    QMenu *fichier;
    QMenu *edition;
    QMenu *algorithme;
    QMenu *aide;
    };


    class Fenetre : public QWidget
    {
    public:
    Fenetre();
    void afficher();

    private:
    //tout le menu
    MonMenu *monmenu;

    };

    #endif



    Citation : fenetre.cpp


    #include "Fenetre.h"

    MonMenu::MonMenu() : QMenuBar()
    {
    fichier = addMenu("fichier");
    edition = addMenu("édition");
    algorithme = addMenu("algorithme");
    aide = addMenu("aide");

    //ajout des possibilitées dans le menu fichier
    fichier->addAction("nouveau");
    fichier->addAction("enregistrer");
    fichier->addAction("charger");
    fichier->addAction("ouvrir un nouvel onglet");
    fichier->addAction("exporter le sous graphe sélectionné dans un nouvel onglet");
    fichier->addAction("quitter");

    //ajout des possibilité dans le menu édition
    edition->addAction("propriétés");

    //ajout des possibilité dans le menu algorithme
    algorithme->addAction("dijkstra");
    algorithme->addAction("ford");
    algorithme->addAction("floyd");
    algorithme->addAction("taillage d'arbre");
    algorithme->addAction("équilibrage d'arbre");
    algorithme->addAction("optimisation de flot");
    algorithme->addAction("recherche de coloration propre");

    //ajout des possibilité dans le menu aide
    aide->addAction("a propos de nous");
    }



    Fenetre::Fenetre() : QWidget()
    {
    setFixedSize(800, 600);

    //délcaration de la barre de menu
    monmenu = new MonMenu();

    }



    void Fenetre::afficher()
    {
    this->show();

    }




    Citation : main.cpp


    #include <QApplication>
    #include "Fenetre.h"



    int main(int argc, char *argv[])
    {
    QApplication app(argc, argv);

    Fenetre fenetre;
    fenetre.afficher();

    return app.exec();
    }

    • Partager sur Facebook
    • Partager sur Twitter
      8 mai 2008 à 12:29:09

      Parce ce que QMenu c'est pas la barre de menu, pour la barre de menu c'est QMenuBar, et tu fais : exemple :
      fichier = this->addMenu("fichier"); // j'avais pas vu que tu à fais un heritage de QMenuBar 
      

      Ou alors une fois que tu a fais les menus :
      addMenu(fichier);
      


      Mais si tu clique dessus ça feras rien il faut connecter avec des slots :
      QAction * addAction ( const QString & text, const QObject * receiver, const char * member, const QKeySequence & shortcut = 0 )
      

      text c'est le nom "fichier exemple"
      receiver c'est comme des QObject::connect(this, SIGNAL(...()), this, SLOT(...()));
      member c'est SLOT()
      shortcut c'est le racouci clavier

      monmenu = new MonMenu();

      Fais un 2ème constructeur dans MonMenu qui s'appelle MonMenu(QObject *parent);
      Et à chaque fois que tu vois un truc avec les parent mes parent (à la place de this exemple)
      • Partager sur Facebook
      • Partager sur Twitter
        8 mai 2008 à 14:19:03

        ok, merci beaucoup, mon erreur était bien d'avoir oublier d'indiquer le parent.
        (pour les liaisons, c'était pour le moment fait expres... vu que j'ai encore rien d'autre du reste du projet, je fais juste une interface bidon reliée a rien)

        J'aurais encore sans doute d'autre question a poser bientot, merci d'avance ^^
        • Partager sur Facebook
        • Partager sur Twitter
          8 mai 2008 à 19:48:45

          Mes sujet résolut et cette réponse m'as aider :p (à droite de m'as réponse)
          • Partager sur Facebook
          • Partager sur Twitter

          Aide 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