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 :

Menu et QVector


Sujet :

Qt

Vue hybride

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

    Informations forums :
    Inscription : Décembre 2007
    Messages : 47
    Par défaut Menu et QVector
    Salut a tous,

    Alors je vous explique ce que je veux faire :
    J'ai edité un fichier xml avec une certaine hierarchie, contenant des menus et les éléments de ces menus, sous la forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <Menu  >
     <element>
         <nom></nom>
         <path></path>
     </element>
      <element>
         <nom></nom>
         <path></path>
     </element>
    </Menu>
    Je veux maintenant créer un menu dans lequel il y aura chaque élément de ce fichier xml. Je me sers du nom pour afficher dans le menu, et à l'aide du path je lance ce que contient le menu ( document ou raccourci vers application) à l'aide d'un StartDetached.

    Cependant voila, pour chaque élément de mon menu, je dois créer une action,
    que j'utiliserais lors de la création de mon Qmenu (avec Addaction).

    La seule solution pour créer plusieurs actions (le même nombre que celui d'éléments) que j'ai trouvée, c'est un QVector<QAction *>.

    Lorsque je crée une action, je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    QVector<QAction *> list;
    list.append(new QAction((nom),this));
    Et pour ajouter une action à un menu, je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for(int j=0;j<=i;j++)    // i est mon nombre d'actions crées, je fais un menu   avec i actions.
     
         {
         menu.addAction(list[j]);
        }

    Le problème est la : lorsque le menu devrait s'afficher : "prog.exe a cessé de fonctionner" ...... Cela vient surement de mon appel a list[i] dans addaction, mais je ne vois pas ou ni pourquoi ??

    Merci pour vos réponses

  2. #2
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Salut,

    Citation Envoyé par clem_69 Voir le message
    for(int j=0;j<=i;j++)
    Je crois que c'est la journée des gens qui ne savent pas écrire de for

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 47
    Par défaut
    salut irmatDen,

    heuuu, j'vois pas trop le soucis dans mon for??? a par mettre ++i à la place de i ++ ?

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par clem_69 Voir le message
    salut irmatDen,

    heuuu, j'vois pas trop le soucis dans mon for??? a par mettre ++i à la place de i ++ ?
    for(int j=0;j<=i;j++)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 47
    Par défaut
    oui bon excusez moi je suis un boulet...... Merci à vous deux.
    Mais je me demande quand même si mon appel à mon QVector lorsque je crée mon menu est correct.....

  6. #6
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    L'appel est bon; qu'est ce qui cloche maintenant?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 47
    Par défaut
    le menu se crée, mais il est vide, il ne contient aucune action ....

  8. #8
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Ben vérifie que tu parses quelque chose pour commencer.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 47
    Par défaut
    bizarre j'ai recompilé 2-3 fois en enlevant et remettant des morceaux de programme tout en vérifiant que je parsais bien quelque chose, et maintenant sa marche !!!

    Merci en tout cas!

    Juste une dernière petite chose: lorsque je fais mes actions, en parallèle, je fais des connect pour associer à chaque action un processus à éxécuter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //path est une Qstring contenant le chemin de l'executable à lancer
    connect(list[i],SIGNAL(triggered()),this,SLOT(Launch(path)));
    J'ai donc une methode Launch qui a pour argument une QString :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void MainWindow::Launch(QString prog)
     {
    	QString cmd = "cmd";
    	QStringList args;
    	args << "/c"<< "start"<<prog;
    	QProcess proc;
    	proc.startDetached( cmd, args );
     
    	}
    C'est pas tres optimisé mais sa me permet aussi bien d'ouvrir un document qu'une application via la console windows.
    Mais dans mon menu, rien ne se passe au clic d'un élément.....
    une idée d'ou cela vient?

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

Discussions similaires

  1. TreeView et menu contextuel...
    Par agh dans le forum Composants VCL
    Réponses: 6
    Dernier message: 06/04/2009, 12h23
  2. [système] Comment ajouter un item dans le context menu de Windows ?
    Par ddmicrolog dans le forum API, COM et SDKs
    Réponses: 8
    Dernier message: 29/06/2005, 17h03
  3. Menu d'installation
    Par Le Yannos dans le forum Langage
    Réponses: 3
    Dernier message: 27/08/2002, 22h15
  4. Inserer Un Menu dans un autre en execution
    Par apt dans le forum Composants VCL
    Réponses: 2
    Dernier message: 12/08/2002, 11h22
  5. Menu en GL
    Par Kaïn dans le forum OpenGL
    Réponses: 2
    Dernier message: 06/05/2002, 11h58

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