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 pour ouvrir projets récents


Sujet :

Qt

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 94
    Points : 46
    Points
    46
    Par défaut Menu pour ouvrir projets récents
    Bonjour


    comme toute bonne appli qui se respecte, dans mon menu je souhaite avoir :
    • Ouvrir un projet

    • Projets Recents -> liste des projets récemment ouverts

    • Fermer Projet



    Ouvrir et Fermer c'est bon.
    Par contre, j'arrive à ajouter des actions à Projets Récents (donc j'ai bien la liste de mes projets récents qui apparait), mais je ne vois pas comment faire pour lancer une fonction (qui chargera le projet) si on clique sur un des projets récents ?
    (cf ma pièce jointe)


    Merci
    Images attachées Images attachées  

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 896
    Points : 219 548
    Points
    219 548
    Billets dans le blog
    125
    Par défaut
    Bonjour,

    Je pense qu'une tel menu de projet récent, devra lancer une action ( signal clicked, pour le menu ( c'est une QAction ). Cette action prendra le nom ( chemin du fichier ) du projet à charger, et il faudra donc utiliser la fonction de chargement de projet pour charger le projet récent.

  3. #3
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Points : 5 545
    Points
    5 545
    Par défaut
    Une fonction à partir du QString du tooltip de l'action (et non du texte qui risque d'être tronqué), avec connect(action, SIGNAL(triggered()), this, SLOT(action())) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void Fonction::action()
    {
         QAction *act = qobject_cast<QAction *>(sender());
         if(!act) return;
         QString text = act->toolTip();
         if(!QFileInfo(text).exists()) return;
         QFile file(text);
         if(!file.open(QIODevice::ReadOnly|QIODevice::Text)) return;
         doSomething(QString(file.readAll()));
         // Donc par exemple, on affiche le texte dans une zone de texte, tout dépend de tes besoins.
    }
    Je suppose que tu stockes tes projets récents via QSettings ?
    Si c'est le cas, il te suffit d'effectuer une boucle lors de la définition de tes menus pour les ajouter un à un, en mettant un texte tronqué et un tooltip contenant le chemin complet.

  4. #4
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 94
    Points : 46
    Points
    46
    Par défaut
    Merci pour vos réponses je vais tester ça.

    En fait mes projets récents (chemin + nom) sont dans un fichier XML que je parcours : à chaque boucle j'ajoute un nouveau "sous" menu avec le chemin et le nom du projet.

    PS : je ne connaissais pas le QSettings (je commence avec Qt) --> problème : mon appli doit être multi plateformes, je préfère jouer avec un fichier xml (comme ça on me fera pas de reproches pour le projet )

  5. #5
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Points : 5 545
    Points
    5 545
    Par défaut
    QSettings est multiplate-forme. Au pire, tu peux toujours utiliser un fichier .ini pour stocker les données.

  6. #6
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 94
    Points : 46
    Points
    46
    Par défaut
    ouai le .ini ça marcherait bien, mais pas l'option par défaut, car sinon le fichier est placé à un endroit différent selon l'OS (normal quoi )

  7. #7
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 94
    Points : 46
    Points
    46
    Par défaut
    Bon comme je suis noob, je fais des trucs de noobs : mon connect ne fonctionne pas (ma fonction action() n'est pas lancée (testé en débug mode)).

    J'ai une mainwindow (ui) qui contient mon Qmenubar.
    Dans ce Qmenubar j'ai 3 sous menus : ouvrir, fermer, et projets récents(menuProjets_R_cents_2).

    voici ce que j'ai test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ui->menuProjets_R_cents_2->connect(ui->menuProjets_R_cents_2, SIGNAL(triggered()), this, SLOT(action()));

    Où est ce que je me suis planté ?

  8. #8
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Points : 8 140
    Points
    8 140
    Par défaut
    Citation Envoyé par titmael Voir le message
    Où est ce que je me suis planté ?
    Est ce que tu as bien défini ton slot dans ton header avec au dessus la macro :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public slots:
      void action();
    Je te conseil de lire la page Signal and Slots de la documentation qui est à mon goût l'une des plus intéressante et l'une des plus utiles

  9. #9
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 94
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par johnlamericain Voir le message
    Est ce que tu as bien défini ton slot dans ton header avec au dessus la macro :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public slots:
      void action();

    Vivi c'est fait, sinon ça ne compile pas. Mais ça ne fonctionne pas.
    Je viens de tester avec cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void MainWindow::on_menuProjets_R_cents_2_triggered()
    et ça marche, sauf que maintenant il faut que je récupère le projet selectionné

  10. #10
    Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 94
    Points : 46
    Points
    46
    Par défaut
    après avoir essuyé mes quelques larmes, j'ai trouvé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void MainWindow::on_menuProjets_R_cents_2_triggered(QAction * action)
    Je récupère le tooltip de action (donc je récupère le chemin de mon fichier car j'avais chargé le tooltip avec le chemin lors du chargement)

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

Discussions similaires

  1. Comment organiser mon projet pour ouvrir un fichier ?
    Par hafizbe dans le forum Développement Web en Java
    Réponses: 4
    Dernier message: 25/06/2014, 15h47
  2. Crash Netbeans pour ouvrir un projet
    Par loubinfo dans le forum NetBeans
    Réponses: 1
    Dernier message: 14/06/2010, 22h00
  3. Problème pour ouvrir un projet
    Par bard123 dans le forum Eclipse
    Réponses: 2
    Dernier message: 12/12/2008, 08h32
  4. Réponses: 2
    Dernier message: 19/06/2008, 15h26
  5. Réponses: 4
    Dernier message: 09/06/2006, 10h08

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