Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Qt] QMenuBar qui ne veut pas prendre la taille que je veux

Sujet résolu
Anonyme
    17 mars 2008 à 20:38:37

    Bonjour à tous :) ,
    Pour expliquer un peu mon code, j'ai une classe FirstWindow qui hérite de QWidget et qui "gère" la fenêtre principale. Ensuite, j'ai une autre classe, MenuBar qui hérite de QMenuBar et qui gère la barre des menus de ma fenêtre principale.
    Donc, je créé un objet MenuBar dans FirstWindow. Le problème c'est quand j'appelle la fonction setGeometry de MenuBar et que je lui demande de prendre la largeur de la fenêtre, celle ci ne le fait pas. En fait, la couleur des menus s'applique juste sur les menus mais pas sur la largeur de la fenêtre comme je le veux. J'espère avoir été quand même assez clair ( :-° )
    Est-ce que j'ai fait une erreur quelque part ou j'ai oublié quelque chose ? Comment faire pour que la MenuBar prenne enfin la bonne taille ?

    Le code :
    main.cpp :
    1. #include <QApplication>
    2. #include "FirstWindow.h"
    3. int main(int argc, char *argv[])
    4. {
    5.     QApplication app(argc, argv);
    6.     FirstWindow window;
    7.     window.show();
    8.     return app.exec();
    9. }


    FirstWindow.h :
    1. #ifndef DEF_FIRSTWINDOW
    2. #define DEF_FIRSTWINDOW
    3. #define LARGEUR_FENETRE     800
    4. #define HAUTEUR_FENETRE     500
    5. #include <QWidget>
    6. #include "MenuBar.h"
    7. class FirstWindow : public QWidget
    8. {
    9.     public:
    10.         FirstWindow();
    11.         ~FirstWindow();
    12.     private:
    13.         MenuBar         *m_menuBar;
    14. };
    15. #endif


    FirstWindow.cpp :
    1. #include "FirstWindow.h"
    2. FirstWindow::FirstWindow() : QWidget()
    3. {
    4.     resize(LARGEUR_FENETRE, HAUTEUR_FENETRE);
    5.     setMinimumSize(LARGEUR_FENETRE, HAUTEUR_FENETRE);
    6.     m_menuBar = new MenuBar(this);
    7.     m_menuBar->setGeometry(0, 0, LARGEUR_FENETRE, 20);
    8. }
    9. FirstWindow::~FirstWindow()
    10. {
    11.     delete m_menuBar;
    12. }


    MenuBar.h :
    1. #ifndef DEF_MENUBAR
    2. #define DEF_MENUBAR
    3. #include <QWidget>
    4. #include <QMenuBar>
    5. #include <QMenu>
    6. class MenuBar : public QMenuBar
    7. {
    8.     public:
    9.         MenuBar(QWidget *parent = 0);
    10.         ~MenuBar();
    11.     private:
    12.         QMenu       *m_fichier;
    13.         QMenu       *m_options;
    14.         QMenu       *m_aide;
    15. };
    16. #endif


    MenuBar.cpp :
    1. #include "MenuBar.h"
    2. MenuBar::MenuBar(QWidget *parent) : QMenuBar(parent)
    3. {
    4.     m_fichier = new QMenu ("Fichier", this);
    5.     m_options = new QMenu ("Options", this);
    6.     m_aide = new QMenu ("?", this);
    7.     addMenu(m_fichier);
    8.     addMenu(m_options);
    9.     addMenu(m_aide);
    10. }
    11. MenuBar::~MenuBar()
    12. {
    13.     delete m_fichier;
    14.     delete m_options;
    15.     delete m_aide;
    16. }


    Voilà, c'est tout, merci d'avance :)
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      19 mars 2008 à 19:10:13

      Un petit UP parce que je trouve toujours pas :(
      • Partager sur Facebook
      • Partager sur Twitter
        19 mars 2008 à 20:10:35

        essaie de faire hériter ta fenêtre de QMainWindow au lieu de QWidget, et de faire ces modif là :

        au lieu de :

        1. m_menuBar = new MenuBar(this);
        2. m_menuBar->setGeometry(0, 0, LARGEUR_FENETRE, 20);


        met :

        1. m_menuBar = new MenuBar;
        2. setMenuBar(m_menuBar);
        • Partager sur Facebook
        • Partager sur Twitter
        Altarapp.com - Applications, Code Snippets, API Wrappers et etc, le tout en C# le plus clair du temps!
        Anonyme
          19 mars 2008 à 20:33:26

          Super ! Un grand merci :)
          • Partager sur Facebook
          • Partager sur Twitter

          [Qt] QMenuBar qui ne veut pas prendre la taille que je veux

          × 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