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 :

Problème QToolBar génère une erreur à l'execution


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 239
    Par défaut Problème QToolBar génère une erreur à l'execution
    Bonjour à tous,
    J'ai un projet de stage à effectuer et j'ai décidé de me tourner vers et d'apprendre Qt (en C++) pour ce faire (notez donc que je suis novice en la matière)

    Je vous explique mon problème:

    Je souhaite créer une barre d'outils dans ma fenetre principale, j'arrive à créer un outil dans cette boite, mais dès que j'en ajoute au moins un, le programme compile mais plante à l'exécution (le fameux et célèbre "ne pas envoyer" :p )

    Voici mon code:
    le .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
    #include <QApplication>
    #include <QMenu>
    #include <QMenuBar>
    #include <QToolBar>
    #include <QWidget> // inheriting class's header file
     
     
    class FenetrePrincipale : public QWidget
    {
    	public:
    		FenetrePrincipale();
    		~FenetrePrincipale();
     
        private:
            QMenuBar *menubar;
            QToolBar *outilbar;
            QMenu *fichier;   
            QMenu *edition;
            QMenu *recherche;
            QMenu *aide;
            QAction *nouveau;
            //QAction *ouvrir;
            //QAction *enregistrer;
     
    };
    Le .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
    51
    52
    53
    54
    #include "fenetreprincipale.h" // class's header file
     
     
    FenetrePrincipale::FenetrePrincipale()
    {
     
         setFixedSize(900, 550);
     
         // Création du menuBar et toolBar
         menubar = new QMenuBar(this);
         outilbar = new QToolBar(this);
     
     
         // Création d'un menu déroulant "Fichier, edition, ..."
         fichier = new QMenu("Fichier", this);
         edition = new QMenu("Edition", this);
         recherche = new QMenu("Recherche", this);
         aide = new QMenu("Aide", this);
         //actions de la toolBar
         nouveau = new QAction("nouveau", this);
     
     
         // et ajout du menu fichier à la barre de menu principale
         menubar->addMenu(fichier);
         menubar->addMenu(edition);
         menubar->addMenu(recherche);
         menubar->addMenu(aide);
     
         //création d'action pour la barre d'outil
         outilbar->addAction(nouveau);
         //outilbar->addAction(ouvrir);
         //outilbar->addAction(enregistrer);
     
         //déplacement de la barre d'outil en dessous de la barre de menu
         outilbar->move(0, 20);
     
         // Ajout d'un item "Ouvrir" dans fichier
         fichier->addAction("Nouveau");
         fichier->addAction("Ouvrir", this, SLOT(ouvirFichier()));
         fichier->addAction("Enregister");
         fichier->addAction("Enregister sous...");
     
         // Ajout d'un item "Quitter" que l'on connecte au slot "close" de la mainWindows
         fichier->addAction( "Fermer",this,SLOT(close()) );
     
     
     
    }
     
     
    FenetrePrincipale::~FenetrePrincipale()
    {
     
    }

    et enfin le main
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <QApplication>
    #include "FenetrePrincipale.h"
     
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
     
        FenetrePrincipale fenetre;    
        fenetre.show(); 
        return app.exec();
    }

    Je précise que je tape le code sous DevC++ et que je compile avec la console de Qt (version OpenSource)
    Merci d'avance pour vos futurs éclairissements

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Par défaut
    Salut,

    Quelques petits trucs :

    Si tu veux faire une fenêtre principale, utilise plutôt QMainWindows.
    Si tu utilises les signaux/slots, tu dois inclure la macro Q_OBJECT dans ton header.
    Tu n'as pas besoin de destructeur.
    Je ne connais pas l'utilisation du addAction("monAction",monparent,SLOT(monSlot)). Perso, je déclare l'action à part, en lui donnant son texte, et je la connecte au slot correspondant. C'est peut être plus "propre" surtout si tu utilise la même action à plusieurs endroits (dans un menu et dans ta barre d'outils par exemple).
    Regarde les exemples intégrés sur ce thème (MainWindows).

    Bonne chance

    g.

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 239
    Par défaut
    Salut,
    d'abord merci pour la réponse.

    Où puis-je trouver un petit tuto sur la classe MainWindow? Ou ne serais-ce que quelque chose pour me permettre de débuter correctement.

    J'ai justement déjà regarder MainWindow mais je m'y suis un peu perdu et le peu que j'ai chercher sur le web, je suis resté sans grand résultat (je dis "le peu que j'ai cherché" car le fait de tout recommencer ne m'enchantais pas vraiment non plus.

    Pour ce qui est du reste, il n'y a que mon second objet QAction qui fait planter mon programme (il compile pourtant très bien, et fonctionne aussi très bien avec un seul QAction)
    En effet, j'avais oublié Q_OBJECT, mais cela ne change rien au disfonctionnement.
    Pour ce qui est du destructeur, il à été créé implicitement donc je l'ai laissé tel quel, sans m'en préocuper (je ne savais pas qu'on pouvais l'enlever )
    Pour les slots, en effets ça doit être plus propre :p

    Regarde les exemples intégrés sur ce thème (MainWindows).
    Tu parles d'une recherche sur le forum? En tout cas je vais essayer. Merci
    Si toutefois quelqu'un trouve une explication à mon problème, je suis prêt à l'entendre, ne serais-ce que par curiosité si je change de tactique.

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Par défaut
    Tu parles d'une recherche sur le forum? En tout cas je vais essayer.
    Non, je parle des exemples de Qt . Vas dans ton dossier Qt/bin et lance qtdemo.exe (si tu es sous windows). Tu vas avoir pas mal de beaux trucs a regarder . Y'a un thème qui s'appelle "Main Windows" et là tu devrais trouver le genre de truc qui t'intéresse.

    Tu peux tester l'appli en appuyant sur "Launch" et tu peux avoir des explications en appuyant sur "Documentation". Dans la doc, tu as en plus les liens vers les fichiers source de l'exemple (qui t'aideront à résoudre ton problème je pense).

    Bonne chance

    g.

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 239
    Par défaut
    En effet, en quelques secondes j'ai pu trouver un code qui ressemble à ce que je veux dans ma MainWindow. J'ai à peine survolé pour le moment, je regarde ce que je peux en faire!

    Merci bien
    (j'attends tout de même de savoir si quelqu'un a une résolution de mon premier problème, et de comment le contrer ou trouver l'erreur qui fait que ça plante, on sait jamais je pourrais une nouvelle fois etre coincé la dessus plus tard...)

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 239
    Par défaut
    Voila, j'ai fait une application de type QMainWindow (uniquement à partir des exemples demo de Qt)
    j'ai à peine remanier pour comprendre un peu ce que contenais le programme en entier, ça compile, mais ici encore je me retrouve avec l'erreur d'execution classique.

    Y'a t-il un moyen pour savoir d'où vient l'erreur lorsqu'on rencontre ce problème? ou dois-je tatonner les yeux fermés dans mon code en espérant tomber dessus?

    Merci d'avance

    EDIT: autre chose, il y a dans le programme des .png pour les icones d'une ToolBar, j'ai mis des .ico à a place, je ne sais pas si tout type de fichiers est accepté

Discussions similaires

  1. Process.Start génère une erreur
    Par jerome.fortias dans le forum C#
    Réponses: 6
    Dernier message: 17/09/2007, 15h31
  2. Source du fichier plat : trop de ligne génère une erreur
    Par Monico dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/08/2007, 16h04
  3. Exécutable qui génére une erreur windows
    Par jouidos dans le forum Windows Forms
    Réponses: 4
    Dernier message: 22/01/2007, 15h50
  4. .lib qui génère une erreur au link
    Par mrshadow dans le forum VC++ .NET
    Réponses: 2
    Dernier message: 19/01/2007, 10h47
  5. [VB6] Problème de textbox multiligne qui génére une erreur
    Par bb62 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 20/02/2006, 16h21

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