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

Outils Discussion :

Affecter une fonction perso à une action [Qt Designer]


Sujet :

Outils

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 426
    Par défaut Affecter une fonction perso à une action
    Bonjours,

    J'ai une feuille qui possede un menu ( Ex : Fichier->Ouvrir ). Comment faire pour lancer une fonction quand je clique sur un élément du menu?
    Ex : clique sur Fichier->Ouvrir lance maFonction()

    J'ai créé dans un projet QtCreator ma feuille avec QtDesigner. Avant je l'avais fait sous PyQt c'etait enfantin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.action_Ouvrir.triggered.connect(self.maFonction)
    , mais refaire la même chose en C++ je n'y arrive pas!!

    J'ai tenté d'ajouter au constructeur de la feuille quelquechose comme ui->action_Ouvrir->??? mais rien de bon ( je ne dois pas être très loin du but ). Comme je tourne en rond depuis un moment, je n'ai plus les idées très claires C'est agaçant car pour affecter un fonction à un bouton c'est simple : aller au slot, ma ça n'existe pas pour les éléments de QMenu...

    Merci d'avance

    Edit 21h27 : En allant dans éditeur de signaux et slots, on peut affecter un slot à un emetteur... mais comment affecter une fonction perso dans slots? Comment la déclarer et la définir??

  2. #2
    Membre chevronné

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 426
    Par défaut
    J'ai fini par trouver!!!

    Voicila façon de proceder pour affecter une fonction à un élément de menu d'un feuille créée avec QtDesigner :

    1) Dans la déclaration de la feuille : déclarer la fonction comme public slots
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class MainWindow : public QMainWindow
    {
        ...
    public slots:
        void maFonction(); 
        ...
    }
    2) Dans la définition de la feuille : définir la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void MainWindow::maFonction()
    {
        // monCode
    }
    3) Puis dans le constructeur de la feuille ajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QObject::connect( ui->action_Ouvrir, SIGNAL(triggered()), this, SLOT(maFonction()) );
    ici action_Ouvrir est l'action correspondant à l'élément Ouvrir du QMenu Fichier créée par QtDesigner

    J'ai eu des difficultées à obtenir la solution car je ne trouvait aucuns exemple à partir d'une feuille créée sous QtDesigner, tous les exemples que je trouvais était sur des feuilles créées à la main!!


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

Discussions similaires

  1. Appel d'une fonction dans une fonction d'une même classe
    Par script73 dans le forum Général Python
    Réponses: 3
    Dernier message: 06/03/2015, 10h18
  2. [PHP-JS] une fonction dans une fonction
    Par lodan dans le forum Langage
    Réponses: 6
    Dernier message: 25/06/2006, 19h14
  3. Réponses: 3
    Dernier message: 29/04/2006, 13h02
  4. Réponses: 3
    Dernier message: 16/01/2006, 16h02
  5. Réponses: 4
    Dernier message: 17/03/2004, 17h24

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