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 :

[Qt4-Win] Connect (SIGNAL/SLOT)

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 90
    Par défaut [Qt4-Win] Connect (SIGNAL/SLOT)
    Bonjour.
    Je débute en Qt donc pour me faire la main, je fais une petite calculatrice.
    J'ai suivi la doc "Qt et c++ : programmation d'une interface Gui" mais je suis un peu perdu là :

    Calc.h :
    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
     
    #ifndef CALC_H
    #define CALC_H
     
    #include <QDialog>
    #include "Ui_Calc.h"
     
    class Calc : public QDialog, public Ui_Calc
    {
     
    	Q_OBJECT
     
    public:
    	Calc(QWidget *parent = 0);
     
    private slots:
    	void Calculer(int);
    	void on_pushButton6_clicked(int);
     
    };
    #endif
    Calc.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
    29
    30
     
    #include <QtGui>
    #include "Calc.h"
     
    Calc::Calc(QWidget *parent)
    : QDialog(parent)
    {
     
    	setupUi(this);
    	/*QRegExp regExp("[0-9]+");
     
    	lineEdit->setValidator(new QRegExpValidator(regExp, this));*/
     
    	QObject::connect(pushButton1,SIGNAL(clicked()),SLOT(Calculer()));
    	QObject::connect(pushButton2, SIGNAL(pressed()), 
    			this, SLOT(Calculer()));
     
    }
     
     
    void Calc::Calculer(int num)
    {
    	lineEdit->insert("1");
    }
     
     
    void Calc::on_pushButton6_clicked(int num)
    {
    	lineEdit->insert("6");
    }
    main.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
     
    #include <QApplication>
    #include <QDialog>
    #include "Calc.h"
     
    int main(int argc, char *argv[]) {
     
    QApplication app(argc, argv);
     
    Calc *objcalc=new Calc;
     
    objcalc->show();
    return app.exec();
     
    }
    et j'ai un fichier Ui_Calc.h qui contient la classe Ui_Calc générée par Qt Designer.

    Mon problème est que je n'arrive pas à faire les connexions... je n'arrive pas à afficher du texte dans lineEdit suite à un clic sur l'un des boutons...
    J'ai essayé plusieurs choses (comme vous pourrez le voir dans le code) mais rien à faire.
    Un chose "fondamentale" doit m'échapper... =(
    Merci.

  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,

    Pour commencer, active la console quand tu es en phase de développement. Qt envoie des messages qui, selon l'IDE ou la méthode de lancement utilisée, ne sont pas capturés. Pour ce faire, il faut que tu ajoutes ceci au fichier pro:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    debug:CONFIG += console
    Ceci dit, tel quel ton code devrait fonctionner. Es-tu sûr d'appuyer sur button1 ou button2 et pas un autre?

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 90
    Par défaut
    Voila ce que j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Object::connect: No such slot Calc::Calculer(1)
    Object::connect:  (sender name:   'pushButton1')
    Object::connect:  (receiver name: 'Dialog')
    J'ai essayé de bidouiller mon Calc.h et mes connect mais rien...

    Si j'appelle directement Calculer() ça fonctionne... dans connect() non (?)

  4. #4
    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
    Ok, y'a un problème: le code compilé et exécuté n'est pas le code que tu as mis dans le premier post. Tu as apparemment mis un argument dans un connect ce qui est formellement interdit.

    Edit: tiens, puisque j'imagine assez la question qui va suivre, voilà une doc qui te montre la solution: http://qt-quarterly.developpez.com/qq-10/signalmapper/

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 90
    Par défaut
    Ok merci ! C'est bon ça fonctionne sans mettre d'argument dans le slot.

    Il y a aucun moyen de passer un paramètre pour utiliser la même fonction pour plusieurs boutons ?

  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
    Si si, cf mon edit

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/08/2014, 09h03
  2. connect(), signal et slot
    Par Go'Gaule dans le forum Débuter
    Réponses: 3
    Dernier message: 27/05/2011, 08h26
  3. Problème de connect (signal/slots)
    Par Alain Defrance dans le forum Qt
    Réponses: 5
    Dernier message: 20/03/2008, 21h58
  4. connect Signal et slot perso
    Par freecircus dans le forum Qt
    Réponses: 3
    Dernier message: 13/12/2006, 20h25
  5. Connexion "directe" signal - slot
    Par broidsy dans le forum Qt
    Réponses: 3
    Dernier message: 27/02/2006, 09h37

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