IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

QMenu dans une classe


Sujet :

Qt

  1. #1
    Membre régulier
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2017
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2017
    Messages : 50
    Points : 92
    Points
    92
    Par défaut QMenu dans une classe
    Bonjour, je suis un débutant en c++ et je voulais créer des Qmenus avec Qt mais j'ai l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    D:\Programmation\C++\Qt\puissance4avecQt\myfenetre.cpp:15: erreur : 'menuBar' was not declared in this scope
         QMenu *menuFichier = menuBar()->addMenu("&Fichier");
                                      ^

    Je crois que c'est à cause de ma classe qui n'hérite pas de QMainWidow mais je dois la faire hériter de QWidget pour le reste du code.
    Voici myfenetre.cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #include "myfenetre.h"
    //Plein de #include que j'ai rajouté au fur et à mesure...
     
    MyFenetre::MyFenetre()
    {
        QMenu *menuFichier = menuBar()->addMenu("&Fichier");
        QMenu *menuEdition = menuBar()->addMenu("&Edition");
        QMenu *menuAffichage = menuBar()->addMenu("&Affichage");
        //Bordel de code qui n'influe pas sur ceci
    }
    Merci de m'éclairer sur cette erreur.

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mai 2017
    Messages : 18
    Points : 27
    Points
    27
    Par défaut
    Au hazard du web :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    #include <QApplication>
    #include <QWidget>
    #include <QMainWindow>
    #include <QPushButton>
    #include <QTextEdit>
    #include <QFont>
    #include <QMenu>
    #include <QMenuBar>
    #include <QAction>
    #include "main.h"
     
    MyFenetre::MyFenetre()
    {
        QWidget window;
        window.resize(400, 300);
        QMenuBar * menu = new QMenuBar(&window);
        QMenu * file = new QMenu("Fichier", &window);
        QMenu * edition = new QMenu("Edition", &window);
        menu->addMenu(file);
        menu->addMenu(edition);
        file->addAction("&New", file, SLOT(XXX()), QKeySequence("Ctrl+N"));
        window.show();
        return app.exec();
    }
    En gros cela marche avec QWiget.
    Mais il faut une QMenuBar (je crois)
    Sinon, il faut le faut apparaitre à la souris ou a une position particulière.
    Ce qui derive de QMainWindows se retrouve souvent dans QWidget

    Il y a un exemple QT

  3. #3
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 711
    Points : 2 347
    Points
    2 347
    Par défaut
    Bonjour.

    Citation Envoyé par Sipige Voir le message
    Je crois que c'est à cause de ma classe qui n'hérite pas de QMainWidow mais je dois la faire hériter de QWidget pour le reste du code.
    C'est exactement ça, la classe QMainWindow n'est au final qu'un QWidget avec des éléments supplémentaires, comme la barre de menu accessible avec QMainWindow::menubar().

    Comme ta classe MyFenetre n'a pas l'air d'hériter de QMainWindow, tu dois gérer la barre de menu manuellement, ce qui n'a rien de compliqué puisque cette classe est un QWidget, donc gérable avec des layouts par exemple.

  4. #4
    Membre régulier
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2017
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2017
    Messages : 50
    Points : 92
    Points
    92
    Par défaut C'est bon
    Merci, le résultat est moche mais je devrai pouvoir arranger ça...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 09/07/2005, 23h10
  2. classe dans une classe ?
    Par tut dans le forum UML
    Réponses: 23
    Dernier message: 25/06/2004, 15h00
  3. [Thread] Erreur dans une classe interne
    Par totof2308 dans le forum Général Java
    Réponses: 5
    Dernier message: 03/06/2004, 08h15
  4. Thread dans une classe ?
    Par Sephi dans le forum Threads & Processus
    Réponses: 7
    Dernier message: 07/03/2004, 18h16
  5. Fonction callback dans une classe
    Par julian_ross dans le forum MFC
    Réponses: 8
    Dernier message: 02/03/2004, 11h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo