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

Discussion :

Plantage de l'application à l'insertion d'une barre de menus

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 25
    Par défaut Plantage de l'application à l'insertion d'une barre de menus
    Bonjour a toutes et tous,

    Voila je rencontre un petit soucis, mon application plante et je ne comprend pas pourquoi, auriez vous une petite idée ? Au passage impossible d’insérer des sous menus... voici mes codes :

    mainwindow.cpp

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    // MaFenetre.cpp
    #include "mainwindow.h"
     
     
     
    mainwindow::mainwindow() : QWidget()
    {
     
        menubar = new QMenuBar(this);
      // menubar->addMenu("&Fichier");
       menubar->addAction("&Fichier");
     
     
        actionQuitter = new QAction("&Quitter", this);
       // menufichier->addAction();
     
       // QMenu menufichier = menubar()->addMenu("&Fichier");
    // menufichier = new QMenu(this);
    // menufichier->addMenu("&Fichier");
     
     
        setFixedSize(500, 500);
        m_boutonDialogue = new QPushButton("Calculez", this);
        m_boutonDialogue->setFixedSize(250, 50);
        m_boutonDialogue->move(250, 250);
        QObject::connect(m_boutonDialogue, SIGNAL(clicked()), this, SLOT(ouvrirDialogue()));
     
        m_bouton1= new QSpinBox(this);
        m_bouton1->setFixedSize(150, 50);
        m_bouton1->move(0, 50);
        // m_bouton1.value();
     
        m_bouton2= new QSpinBox(this);
        m_bouton2->setFixedSize(150, 50);
        m_bouton2->move(0, 100);
     
    QString nom1=m_bouton2->text();
     
        label1 = new QLabel(nom1, this);
        label1->setFixedSize(250, 50);
        label1->setText("ooo");
        label1->move(0, 100);
    }
     
    void mainwindow::ouvrirDialogue()
    {
     
    QMessageBox::warning(this, "Titre de la fenêtre", "Attention, vous êtes peut-être un Zéro !");
     
    }
    main.cpp
    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
    // main.cpp
    #include <QApplication>
    #include "mainwindow.h"
     
     
    int main(int argc, char *argv[])
    {
    QApplication app(argc, argv);
     
    mainwindow fenetre;
    fenetre.show();
     
    return app.exec();
     
     
    }
    mainwindows.h
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    // MeFenetre.h
    #ifndef DEF_MEFENETRE
    #define DEF_MEFENETRE
    #include <QApplication>
    #include <QWidget>
    #include <QPushButton>
    #include <QSpinBox>
    #include <QLabel>
    #include <QMenu>
    #include <QMenuBar>
    #include <QAction>
    #include <QInputDialog>
    #include <QFontDialog>
    #include <QHBoxLayout>
    #include <QMessageBox>
     
    class mainwindow : public QWidget
    {
    Q_OBJECT
    public:
    mainwindow();
     
    public slots:
    void ouvrirDialogue();
     
    private:
    QPushButton *m_boutonDialogue;
     
    QSpinBox *m_bouton1;
    QSpinBox *m_bouton2;
    QLabel *label1;
    QMenu *menufichier;
    QMenuBar *menubar;
    QAction *actionQuitter;
    };
    #endif

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Je ne vois rien au premier regard qui puisse faire planter l'application
    À quel moment cela plante-t-il ? As-tu essayé de faire un débogage ?

    Je remarque que ta QSpinBox (et non QPushButton comme son nom le suggèrerait...) et ton QLabel sont positionés au même endroit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    m_bouton2->move(0, 100);
    label1->move(0, 100);
    Pour ce qui est des menus, on hérite plutôt de QMainWindow et non de QWidget pour en bénéficier. On peut alors faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    QMenu *menuFichier = new QMenu(tr("&Fichier"),this);
    menuFichier->addAction("Quitter", this, SLOT(close()) );
    menuBar()->addMenu(menuFichier);

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 25
    Par défaut
    Bonjour Jérôme,

    Je te remercie pour ton aide ! Alors en remplaçant par ton code et en utilisant le deboggeur j'obtiens cette erreur :

    C:\Qt\Tools\QtCreator\bin\calcul_IMC\mainwindow.cpp:11: erreur : expression cannot be used as a function
    menubar()->addMenu(menufichier);

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    // MaFenetre.cpp
    #include "mainwindow.h"
     
     
     
    mainwindow::mainwindow() : QWidget()
    {
     
        QMenu *menufichier = new QMenu(tr("&Fichier"),this);
        menufichier->addAction("Quitter", this, SLOT(close()) );
        menubar()->addMenu(menufichier);
     
        //menubar = new QMenuBar(this);
      // menubar->addMenu("&Fichier");
      //menubar->addAction("&Fichier");
     
     
       // actionQuitter = new QAction("&Quitter", this);
       // menufichier->addAction();
     
       // QMenu menufichier = menubar()->addMenu("&Fichier");
    // menufichier = new QMenu(this);
    // menufichier->addMenu("&Fichier");
     
     
        setFixedSize(500, 500);
        m_boutonDialogue = new QPushButton("Calculez", this);
        m_boutonDialogue->setFixedSize(250, 50);
        m_boutonDialogue->move(250, 250);
        QObject::connect(m_boutonDialogue, SIGNAL(clicked()), this, SLOT(ouvrirDialogue()));
     
        m_bouton1= new QSpinBox(this);
        m_bouton1->setFixedSize(150, 50);
        m_bouton1->move(0, 50);
        // m_bouton1.value();
     
        m_bouton2= new QSpinBox(this);
        m_bouton2->setFixedSize(150, 50);
        m_bouton2->move(0, 100);
     
    QString nom1=m_bouton2->text();
     
        label1 = new QLabel(nom1, this);
        label1->setFixedSize(250, 50);
        label1->setText("ooo");
        label1->move(0, 100);
    }
     
    void mainwindow::ouvrirDialogue()
    {
     
    QMessageBox::warning(this, "Titre de la fenêtre", "Attention, vous êtes peut-être un Zéro !");
     
    }

  4. #4
    Invité
    Invité(e)
    Par défaut
    menubar() est une méthode de la classe QMainWindow, c'est pour cela que je te suggérais d'hériter de cette classe plutôt que de QWidget.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 25
    Par défaut
    Merci ça marche parfaitement !

    NB : Juste pour info c'est un modérateur qui marque le sujet comme résolu ou il faut qu'on le fasse soi même ?

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 151
    Billets dans le blog
    150
    Par défaut
    Vous pouvez le faire vous même, il y a un bouton, juste en dessous du dernier message
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

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

Discussions similaires

  1. Création d'une barre de menus
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/03/2009, 16h49
  2. Lister les commandes d'une barre de menus
    Par fevec dans le forum IHM
    Réponses: 1
    Dernier message: 09/01/2008, 20h55
  3. Comment gerer une Barre de menus en connaissant le Handle
    Par blondelle dans le forum C++Builder
    Réponses: 7
    Dernier message: 25/02/2007, 16h47
  4. Copier-coller une barre de menus entre 2 feuilles
    Par mbzhackers dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 27/05/2006, 11h34

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