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

Discussion :

Appeler une interface en cliquant sur un bouton dans une autre interface

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 11
    Points : 4
    Points
    4
    Par défaut Appeler une interface en cliquant sur un bouton dans une autre interface
    Bonjour,
    J'ai une interface contenant un bouton je veux qu'en appuyant sur le bouton une autre interface s'affiche mais je n'ai pas pu faire le lien entre le bouton et l'interface.
    L'interface est déjà crée avec le .cpp , le .h et le .ui.

    J'ai essayé de créer mon propre slot de l'interface que je veux afficher connecté au signal clicked() du bouton de mon interface initiale mais ça marche pas.

    Merci d'avance.

  2. #2
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 696
    Points : 2 439
    Points
    2 439
    Par défaut
    Bonjour.

    Les slots qui t’intéresse sont exec() et show() selon que tu veux afficher la fenêtre en modal ou non-modal.

    Dans la fonction connect() tu dois connecter le signal click() de ton bouton à une de ces méthodes de l'instance de ton interface.
    Je fais appel aux esprits de Ritchie, Kernighan, Stroustrup et Alexandrescu
    Donnez moi la force, donnez moi le courage de coder proprement !

    « Ça marche pas » n'est PAS une réponse convenable, merci de détailler le souci en fournissant l’environnement, le code source, les commandes et les messages d'erreur.

    Ce club possède également un clavardage, on y trouve quelques perles entre deux sessions d'entraides.

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Bonsoir,
    Dans mon main.cpp j'ai ajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    QPushButton choix1;
        fenetre_choix1 w;
        QWidget::connect((choix1, SIGNAL(clicked()),w,SLOT(choix1_clicked())));
    Et dans le .cpp de l'interface contenant le bouton choix1 j'ai écrit ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void principale::choix1_clicked()
    {
      fenetre_choix1 w;
      w.show();
    }
    mais l'appui sur le bouton choix1 ne fait pas appel à l'interface fenetre_choix1

  4. #4
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 696
    Points : 2 439
    Points
    2 439
    Par défaut
    Citation Envoyé par rawdh Voir le message
    Bonsoir,
    Dans mon main.cpp j'ai ajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    QPushButton choix1;
        fenetre_choix1 w;
        QWidget::connect((choix1, SIGNAL(clicked()),w,SLOT(choix1_clicked())));
    Où exactement ?
    Dans le fichier d'en-tête (le .h), dans le constructeur, hors de tout fonction ?

    Citation Envoyé par rawdh Voir le message
    Et dans le .cpp de l'interface contenant le bouton choix1 j'ai écrit ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void principale::choix1_clicked()
    {
      fenetre_choix1 w;
      w.show();
    }
    Tu créé une fenêtre à chaque clic sur le bouton, mais elle a à peine le temps de s'afficher qu'elle est déjà détruite.

    À moins que tu aies besoin de plusieurs fenetre_choix1, tu devrais mettre la ligne fenetre_choix1 w; dans la classe class principale dans le fichier d'en-tête de principale (principale.h je suppose) et QWidget::connect((choix1, SIGNAL(clicked()), w, SLOT(choix1_clicked() ))); dans le constructeur principale::principale().
    Je fais appel aux esprits de Ritchie, Kernighan, Stroustrup et Alexandrescu
    Donnez moi la force, donnez moi le courage de coder proprement !

    « Ça marche pas » n'est PAS une réponse convenable, merci de détailler le souci en fournissant l’environnement, le code source, les commandes et les messages d'erreur.

    Ce club possède également un clavardage, on y trouve quelques perles entre deux sessions d'entraides.

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Bonsoir,

    j'ai essayé de faire comme tu m'a dit mais maintenant avec 2 boutons.En fait, j'ai 3 interfaces planif_choix , planif_mat et planif_OF , je dois appeler planif_mat et planif_OF à partir de planif_choix.
    En effet les deux boutons sont dans planif_choix , pushbutton_mat qui appelle planif_mat et pushbutton_OF qui appelle planif_OF pour cela j'ai créé les slots pushButton_mat_clicked() et pushButton_OF_clicked()

    voilà ce que j'ai dans planif.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private slots:
    void pushButton_mat_clicked();
    void pushButton_OF_clicked();
     
    private:
        Ui::planif_choix *ui;
        QPushButton *pushButton_mat;
        QPushButton *pushButton_OF;
    planif.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
    planif_choix::planif_choix(QWidget *parent) :
        QDialog(parent),
        ui(new Ui::planif_choix)
    {
        QPushButton pushButton_mat;
        QPushButton pushButton_OF;
     
        connect((&pushButton_mat, SIGNAL(clicked()),this,SLOT(pushButton_mat_clicked())));
        connect((&pushButton_OF, SIGNAL(clicked()),this,SLOT(pushButton_OF_clicked())));
        ui->setupUi(this);
    }
     
    planif_choix::~planif_choix()
    {
     
        delete ui;
    }
    void planif_choix::pushButton_mat_clicked()
    {
        planif_mat w;
        w.show();
    }
     
    void planif_choix::pushButton_OF_clicked()
    {
        planif_OF d;
        d.show();
    }
    et dans le main.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     planif_choix fenetre;
        fenetre.show();
    mais j'ai cette erreur: no matching function for call to 'planif_choix ::connect(const char*)'

    Merci d'avance.

  6. #6
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 696
    Points : 2 439
    Points
    2 439
    Par défaut
    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
    //planif.h
    private:
        QPushButton *pushButton_mat;
        QPushButton *pushButton_OF;
     
    //planif.cpp
    planif_choix::planif_choix(QWidget *parent) :
        QDialog(parent),
        ui(new Ui::planif_choix)
    {
        QPushButton pushButton_mat;
        QPushButton pushButton_OF;
     
        connect((&pushButton_mat, SIGNAL(clicked()),this,SLOT(pushButton_mat_clicked())));
        connect((&pushButton_OF, SIGNAL(clicked()),this,SLOT(pushButton_OF_clicked())));
        ui->setupUi(this);
    }
    Attention, tu créés deux boutons dans le constructeur qui masquent ceux déclarés dans la classe !
    Tu dois les enlever et modifier les connect. Ou mieux puisque tu sembles l'utiliser, mettre les boutons avec le designer de fenêtres.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void planif_choix::pushButton_mat_clicked()
    {
        planif_mat w;
        w.show();
    }
     
    void planif_choix::pushButton_OF_clicked()
    {
        planif_OF d;
        d.show();
    }
    Encore une fois, tu créés une fenêtre à chaque clic, mais elle ne s'affichera pas (voir post précédent).
    Je fais appel aux esprits de Ritchie, Kernighan, Stroustrup et Alexandrescu
    Donnez moi la force, donnez moi le courage de coder proprement !

    « Ça marche pas » n'est PAS une réponse convenable, merci de détailler le souci en fournissant l’environnement, le code source, les commandes et les messages d'erreur.

    Ce club possède également un clavardage, on y trouve quelques perles entre deux sessions d'entraides.

  7. #7
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Bonsoir,
    Merci beaucoup pour votre aide j'ai enfin trouvé une solution.

    Cette fois ma fenêtre principale s'appelle ChoixDialog contenant le bouton et l'interface que je veux afficher s'appelle MatDialog.
    Il suffit de cliquer sur le bouton et choisir aller au slot puis choisir clicked() et on aura dans ChoixDialog.cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void ChoixDialog::on_pushButton_mat_clicked()
    {
        matdialog= new MatDialog(this);
        matdialog->show();
    }
    Dans ChoixDialog.cpp et ChoixDialog.h j'ai ajouté #include "matdialog.h"
    Aussi dans ChoixDialog.h j'ai ajouté:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    private:
        MatDialog *matdialog;
    Dans ChoixDialog.h le code qui suit s'ajoute automatiquement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    private slots:
        void on_pushButton_mat_clicked();
    Encore une fois merci beaucoup.

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

Discussions similaires

  1. Réponses: 19
    Dernier message: 14/05/2010, 00h04
  2. appel d'une fonction en cliquant sur un bouton
    Par om_fanatics dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 22/04/2009, 09h56
  3. Réponses: 4
    Dernier message: 31/07/2006, 14h19
  4. placer un texte dans une textarea en cliquant sur un bouton
    Par BernardT dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 14/11/2005, 17h17
  5. Réponses: 4
    Dernier message: 14/11/2005, 15h58

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