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 confirmé
    Inscrit en
    Octobre 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 94
    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
    27 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 114
    Billets dans le blog
    147
    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.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  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
    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.
    N'oubliez pas de consulter la FAQ Qt ainsi que les cours et tutoriels C++/Qt !

    Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL)
    Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML
    Vous cherchez un livre sur Qt 5, Qt Quick et QML ? Créer des applications avec Qt 5 - Les essentiels

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 94
    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
    Par défaut
    QSettings est multiplate-forme. Au pire, tu peux toujours utiliser un fichier .ini pour stocker les données.
    N'oubliez pas de consulter la FAQ Qt ainsi que les cours et tutoriels C++/Qt !

    Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL)
    Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML
    Vous cherchez un livre sur Qt 5, Qt Quick et QML ? Créer des applications avec Qt 5 - Les essentiels

  6. #6
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 94
    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 confirmé
    Inscrit en
    Octobre 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 94
    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 : 39
    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
    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 confirmé
    Inscrit en
    Octobre 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 94
    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 confirmé
    Inscrit en
    Octobre 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 94
    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