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 :

probleme boutons inopérant


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 174
    Par défaut probleme boutons inopérant
    Bonsoir,
    J'ai encore un probleme: lorsque j'apuis sur le bouton "afficher second bouton", il devrai m'afficher le bouton "second bouton" mais rien ne se passe.
    Voici le code :
    fonctiono.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #ifndef P
    #include <QPushButton>
    #endif
    class bdd : public QPushButton
    {
        public slots:
        void pish(QPushButton &ref);
    };
    fonctiono.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #ifndef P
    #include <iostream>
    #include <QApplication>
    #include <QPushButton>
    #include "fonctiono.h"
    using namespace std;
    #endif
     
     
    void bdd::pish(QPushButton &ref)
    {
    ref.show();
    }
    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
    16
    17
    18
    19
    20
    21
    22
    #define P
    #include <iostream>
    #include <QApplication>
    #include <QPushButton>
    #include "fonctiono.h"
     
    using namespace std;
     
     
    int main(int argc, char *argv[])
    {
    	QApplication app(argc,argv);
    	QPushButton bouton("afficher second bouton");
    	QPushButton b2("second bouton");
    	bdd objet;
    	bouton.show();
    	QPushButton::connect(&bouton, SIGNAL(clicked()),&objet, SLOT(pish(b2)));
     
    	return app.exec();
     
     
    }
    Pouvez vous m'aider à résoudre ce probleme?

    merci d'avance

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Pei,

    Désolé, j"avais écrit une bêtise, il faut que je vérifie (il y a plus d'un an que je n'ai pas utilisé Qt )

    Déjà, ce n'est ainsi que fonctionnent les "sentinelles" pour les fichiers headers:

    dans le p.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #ifndef P
    #define P
    ...
    #endif
    dans le p.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #include tout ce qu'il faut
    #include "p.h"
    ...
    dans le main:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    #include tout ce qu'il faut
    #include "p.h"
    ...
    Au passage, P comme nom pour la sentielle, c'est un peu court, et donc potentiellement dangereux, il est si rapide de le réutiliser.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 174
    Par défaut
    sa arrive

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Fio,

    En vitesse, si ta classe définit des slots ou signals, il faut qu'elle charge la macro
    Q_OBJECT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class GG : public QObject
     {
         Q_OBJECT
    ...
     public slots:
         void setValue(int value);
     
     signals:
         void valueChanged(int newValue);
    ...
     };
    Regarde dans la doc ce que ça signifie : il faut traiter ton fichier avec moc

  5. #5
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Dio,

    Bien, voilà : c'est erreur assez courante, car le compilateur ne peut pas vérifier cela:

    Quand on établi une connexion, il faut que le SLOT et le SIGNAL aient le même nombre d'arguments, et que ces arguments aient respectivement le même type.

    Donc, la connexion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	QPushButton::connect(&bouton, SIGNAL(clicked()),&objet, SLOT(pish(b2)));
    n'est pas valide.

    Il faut que tu définisses un SLOT sans argument pour pouvoir te connecter sur le SIGNAL clicked() d'un QPushButton, qui n'en a pas.

    Tu ne pourras donc pas faire le programme tel que l'as prévu, il faut trouver un autre moyen.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 174
    Par défaut
    alors j'ai reussi a obtenir quelque chose avec le code suivant mais le probleme c'est que quand je clique sur le premier bouton, le deuxieme aparait puis disparait tres peu de temps apres l'aparition:

    fonctiono.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #ifndef P
    #include <QPushButton>
    #endif
    class bdd : public QPushButton
    {
        Q_OBJECT
        public slots:
        void pish();
    };
    fonctiono.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
    #ifndef P
    #include <iostream>
    #include <QApplication>
    #include <QPushButton>
    #include "fonctiono.h"
    using namespace std;
    #endif
     
     
    void bdd::pish()
    {
     
        QPushButton b2("second bouton");
    b2.show();
    }
    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
    16
    17
    18
    19
    20
    21
    22
    #define P
    #include <iostream>
    #include <QApplication>
    #include <QPushButton>
    #include "fonctiono.h"
     
    using namespace std;
     
     
    int main(int argc, char *argv[])
    {
    	QApplication app(argc,argv);
    	QPushButton bouton("afficher second bouton");
     
    	bdd objet;
    	bouton.show();
    	bouton.connect(&bouton, SIGNAL(clicked()),&objet, SLOT(pish()));
     
    	return app.exec();
     
     
    }

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

Discussions similaires

  1. [HTML] Probleme boutons-images avec firefox
    Par baba_star dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 09/07/2006, 17h49
  2. Probleme bouton + id + css
    Par Seth77 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 11/04/2006, 16h32
  3. probleme bouton radio avec onChange dans formulaire
    Par wil4linux dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 14/09/2005, 11h26
  4. probleme bouton radio checked
    Par coachbob44 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/04/2005, 10h02
  5. [C#] Probleme bouton et place holder
    Par moimoimoi dans le forum ASP.NET
    Réponses: 12
    Dernier message: 02/04/2004, 12h01

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