Partage
  • Partager sur Facebook
  • Partager sur Twitter

Qt + MenuBar

Signal

Sujet résolu
    13 juin 2018 à 20:13:25

    Bonjour je vous expose mon soucis,

    J'ai créer une Fenêtre Principale et j'ai ajouter une MenuBar avec l'onglet "Fichier" et dans "Fichier" se trouve ouvrir, quand je clique sur ouvrir j'aimerai que le programme m'ouvre une boite de dialogue getOpenFileName.

    Merci pour l'aide d'avance

    Voici mon programme : 

    #include"fenprincipale.h"

    FenPrincipale::FenPrincipale()
    {
    menuFichier=menuBar()->addMenu("&Fichier");
    menuEdition=menuBar()->addMenu("&Edition");
    menuAffichage=menuBar()->addMenu("&Affichage");
    actionQuitter=newQAction("Quitter",this);
    actionOuvrir=newQAction("Ouvrir",this);
    menuFichier->addAction(actionOuvrir);
    dossiersRecents=menuFichier->addMenu("Dossiers&récents");
    dossiersRecents->addAction("dossier1");
    dossiersRecents->addAction("dossier2");
    dossiersRecents->addAction("dossier3");
    menuFichier->addAction(actionQuitter);
    actionOuvrir->setShortcut(QKeySequence("Ctrl+O"));
    actionQuitter->setShortcut(QKeySequence("Ctrl+Q"));
    QObject::connect(actionOuvrir,SIGNAL(triggered(bool)),this,SLOT(ouvrirFichiers()));
    QObject::connect(actionQuitter,SIGNAL(triggered(bool)),qApp,SLOT(quit()));
    }
    voidFenPrincipale::ouvrirFichiers()
    {
    QStringfichier=QFileDialog::getOpenFileName(this,"Ouvrirunfichier",QString(),"Images(*.png*.gif*.jpg*.jpeg)");
    QMessageBox::information(this,"Fichier","Vousavezsélectionné:\n"+fichier);
    }

    -
    Edité par AlexisPapon 13 juin 2018 à 20:17:40

    • Partager sur Facebook
    • Partager sur Twitter
      13 juin 2018 à 20:26:32

      Salut, je pense que tu te compliques la vie énormément...

      Premièrement, on utilise pas cette syntaxe SIGNAL / SLOT en Qt depuis les année 55 avant JC. Tu as beau aimer l'histoire, laisse le passé derrière toi ;). On préfèrera utiliser les pointeurs sur fonctions : plus safe, plus performant (probablement), et sûrement pleins d'autres avantages.

      Secondement, les QAction que tu crées, tu aurais pu les créer directement au sein de ton menu.

      Troisièmement, le connect est inutile étant donné que tu peux donner le slot directement à la création de ton action.

      Le code équivalent donnerait quelque chose comme ça :

      auto actionOuvrir = menuFichier->addAction("Ouvrir Fichier", this, FenPrincipale::ouvrirFichiers);
      actionOuvrir->setShortcut(...)

      Après je ne sais pas quel est ton problème, qu'est ce qui ne va pas avec ton code? Et surtout qu'est ce qui ne va pas après avoir mis ton code à jour ;).

      • Partager sur Facebook
      • Partager sur Twitter
      http://cpp-rendering.io : Vous trouverez tout ce dont vous avez besoin sur Vulkan / OpenGL et le rendu 3D !
        13 juin 2018 à 21:28:54

        J'ai suivie ton code et tous marche, je te remercie beacoup 

        Et pour les SIGNAL et SLOT je suis le cours C++ avec la partie Qt et c'est comme qu'il procède pour des bouton exemples.

        • Partager sur Facebook
        • Partager sur Twitter
          13 juin 2018 à 21:37:56

          Change de cours alors, le cours sur Openclassroom n'est pas bien
          • Partager sur Facebook
          • Partager sur Twitter
          http://cpp-rendering.io : Vous trouverez tout ce dont vous avez besoin sur Vulkan / OpenGL et le rendu 3D !
            13 juin 2018 à 22:13:41

            Tu me conseille quoi comme cours ?
            • Partager sur Facebook
            • Partager sur Twitter
              13 juin 2018 à 23:47:38

              Des livres (C++ primer ?), ou le cours de guillaume beltz :)
              • Partager sur Facebook
              • Partager sur Twitter
              http://cpp-rendering.io : Vous trouverez tout ce dont vous avez besoin sur Vulkan / OpenGL et le rendu 3D !

              Qt + MenuBar

              × 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