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 :

connexion d'un slot

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de lastrecrue
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    360
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 360
    Par défaut connexion d'un slot
    salut
    bon voila, encore une fois javance plus, je crée un bouton simple et je veux le connecte a une slot que je créer moi meme.
    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
     
    class Ui_MainWindow : public QMainWindow
    {
    // Q_OBJECT
    private slots: 
        void clearal();
    public:
        QPushButton *pushButton_2;
        QPushButton *pushButton;
        QGraphicsView *graphicsView;
        QGraphicsScene *graphicsScene;
        void clearal()
        {
    		graphicsScene->setForegroundBrush(Qt::blue);
        }   
        void ecoute()
        {
        	QObject::connect( pushButton_2, SIGNAL(clicked()),this,SLOT(clearal()));
       	QObject::connect( pushButton, SIGNAL(clicked()),this,SLOT(quit()));
        }
    };
    #endif // UI_QT_METAH_H
    la il y 'a une partie du code qui manque pour ne pas encombrer la page, mais bon, je crois que ça peut aider a voir ou je bloc car le reste n'a aucun lien a ce que je pense.....
    alors finalement ma question est comment fair en sorte pour connecter mes propre slot??

  2. #2
    Membre expérimenté Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Par défaut
    salut, tu l'appelles au moins ta fonction ecoute() ?

    Pourquoi ta macro Q_OBJECT est commentée ? si c'est le cas, c'est normal que ça ne marche pas.

  3. #3
    Membre expérimenté Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Par défaut
    Fichier .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
    class Ui_MainWindow : public QMainWindow
    {
        // Place du/des constructeur
        // Place du destructeur
        Q_OBJECT  // A décommenter !!
    
    private slots: 
        void clearal();
    
    public:
        QPushButton *pushButton_2;
        QPushButton *pushButton;
        QGraphicsView *graphicsView;
        QGraphicsScene *graphicsScene; 
        // void ecoute() // si elle sert que a connecter, alors autant faire une createConnections()
    
    };
    #endif // UI_QT_METAH_H

    Fichier .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
    Ui_MainWindow:: Ui_MainWindow
    {
        // Ton code normal dans ce constructeur
        createConnections();  // Demande de faire les connections
    }
    
    
    void Ui_MainWindow::createConnections()
    {
        QObject::connect( pushButton_2, SIGNAL(clicked()),this,SLOT(clearal()));
    
        // L'autre bouton est connection au slot quit de la QApplication courante
        Object::connect( pushButton, SIGNAL(clicked()),qApp,SLOT(quit()));
    }
    
    void Ui_MainWindow::clearal()
    {
        graphicsScene->setForegroundBrush(Qt::blue);
    }

  4. #4
    Membre expérimenté Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Par défaut
    Enfin, voilà les liens vers les documentations utiles :

    documentation de la macro Q_OBJECT

    documentation de la macro qApp

    ducumentation de signals and slots
    Extrait du lien précédent :
    All classes that contain signals or slots must mention Q_OBJECT at the top of their declaration. They must also derive (directly or indirectly) from QObject.
    Voilà, j'espère que tu vas t'en sortir, ce n'est à priori qu'une boulette.

  5. #5
    Membre éclairé Avatar de lastrecrue
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    360
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2006
    Messages : 360
    Par défaut
    merci pour votre aide, je crois que j'ai bien suivie les démarche, mais je fini avec l'erreur que je déteste les plus maintenant .

    main.o: In function `Ui_MainWindow::Ui_MainWindow(QMainWindow*)':
    main.cpp.text+0x18a4): undefined reference to `vtable for Ui_MainWindow'
    collect2: ld a retourné 1 code d'état d'exécution
    make: *** [qt_metah] Erreur 1

    je travaille sous ubuntu, et j'utilise bien avidement qmake. si vous savez d'où viens mon problème, si non d'où viens cette erreur en général???

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Salut
    essaie un make clean et un make.

    Pour une raison incertaine, un fichier .cpp qui n'as pas été mis à jour par moc et/ou recompilé

    Ou alors tu as oublié de rajouter le Q_OBJECT
    Ou alors tu as oublié de faire qmake après avoir ajouté le Q_OBJECT

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/09/2010, 15h52
  2. Réponses: 8
    Dernier message: 22/05/2010, 11h50
  3. Connexion d'un raccourci clavier à une SLOT
    Par Nehmé dans le forum Qt
    Réponses: 2
    Dernier message: 27/11/2008, 21h53
  4. Connexion de slot qui bug
    Par alpha_one_x86 dans le forum Qt
    Réponses: 3
    Dernier message: 16/10/2007, 08h32
  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