Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Qt] Une bonne architecture de programme

Sujet résolu
    8 mai 2008 à 2:11:28

    Bonjour,

    Je suis en train de me lancer avec Qt. Pour m'entrainer, je fais l'exemple classique de l'éditeur de texte.

    Or dès le niveau de la phase de conception je suis fasse à une interrogation :

    Mon main instancie un objet CMainWindow (dérivée de QMainWindow) qui va lui même instance une classe QMenuBar (une classe perso pour ne pas alourdir QMainWindow avec mon menu).

    Le code :

    CMainWindow::CMainWindow() : QMainWindow()
    {
        this->_menuBar = new CMenuBar(this);
        setMenuBar(this->_menuBar->GetQMenuBar());
    }
    


    CMenuBar::CMenuBar(QMainWindow *mainWindow)
    {
        this->_mainWindow = mainWindow;
        this->_menuBar = new QMenuBar(this->_mainWindow);
        setMenu();
    }
    
    QMenuBar* CMenuBar::GetQMenuBar()
    {
        return this->_menuBar;
    }
    
    void CMenuBar::setMenu()
    {
        this->_menuFile = new QMenu("Fichier");
    
        this->_menuFile->addAction("Quitter", this->_mainWindow, SLOT(close()), this->_mainWindow->tr("CTRL+Q"));
    
        this->_menuBar->addMenu(this->_menuFile);
    }
    


    Résultat : tout marche bien pourtant... Je me demande si cette façon de faire est bien propre. Qu'en pensez vous ?
    • Partager sur Facebook
    • Partager sur Twitter
      8 mai 2008 à 3:19:04

      assez bien, oui.

      Une chose, peut-être : faire hériter ta class CMenuBar de QMenuBar, pour ne pas avoir à utiliser la méthode GetQMenuBar(), un poil encombrante.

      mais à part ça, ya rien à redire, celon moi.

      EDIT : si tu as besoin d'aide sur la création d'un éditeur de texte, MP moi ^^ je suis moi aussi en train d'en faire un (voir signature), et d'ailleurs en train de faire une refonte du code...
      • Partager sur Facebook
      • Partager sur Twitter
      Altarapp.com - Applications, Code Snippets, API Wrappers et etc, le tout en C# le plus clair du temps!
        8 mai 2008 à 3:22:13

        je rajouterais qu'il n'y a pas vraiment de conseils à donner car chacun à sa façon de faire et tu trouveras ta solution à force de coder (surtout lorsque tu feras des programmes un poil conséquent)
        • Partager sur Facebook
        • Partager sur Twitter
          8 mai 2008 à 12:28:18

          Citation : shadosan

          assez bien, oui.

          Une chose, peut-être : faire hériter ta class CMenuBar de QMenuBar, pour ne pas avoir à utiliser la méthode GetQMenuBar(), un poil encombrante.

          mais à part ça, ya rien à redire, celon moi.

          EDIT : si tu as besoin d'aide sur la création d'un éditeur de texte, MP moi ^^ je suis moi aussi en train d'en faire un (voir signature), et d'ailleurs en train de faire une refonte du code...



          C'est ce que je faisais au début mais y'avait un petit bug dans l'affichage de la barre :/

          Je suis face à un autre petit problème d'ailleurs ; si à la place de :

          this->_menuFile->addAction("Quitter", this->_mainWindow, SLOT(close()), this->_mainWindow->tr("CTRL+Q"));
          


          Je veux créer un objet QAction, que je lie à _menuFile en faisant :

          this->_menuFile->addAction(_monQAction)
          


          Et qu'après je veux connecter un signal avec un slot :

          connect(this->_monQAction, SIGNAL(trigerred()), this->_mainWindow, SLOT(close()));
          


          La fenetre ne se ferme pas :/

          Vous avez une idée d'où ça peut venir?

          En tout cas, merci pour vos réponses :)
          • Partager sur Facebook
          • Partager sur Twitter
            8 mai 2008 à 16:40:26

            tu a fait une fote d'ortho - ce n'est pas trigerred mais triggered ;) (le pire et c'est ce que je déteste, les phauthe d'ortho dans un SIGNAL() / SLOT() passe bien à la compilation -_-)

            EDIT : activer temporairement la console peux aider à déceler ce genre d'erreur. Tu n'as qu'à ajouter dans ton fichier .pro :

            QT += console

            et si un connect() foire, il affichera un message.
            • Partager sur Facebook
            • Partager sur Twitter
            Altarapp.com - Applications, Code Snippets, API Wrappers et etc, le tout en C# le plus clair du temps!
              9 mai 2008 à 11:23:37

              Effectivement ça marche mieux :)

              Merci pour l'astuce de la console :p
              • Partager sur Facebook
              • Partager sur Twitter

              [Qt] Une bonne architecture de programme

              × 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