RECHERCHER :
COMMUNAUTE MP
Identifiez vous ...
Devenir Membre
J'ai oublié mon MDP
DOMAINE MP
Bavardages
Langages Généraux
Langages Web
Langages DotNet
Autres langages
Dev. Jeux Video
Sécurité
Sys. Exploitation
Graphismes
Logiciels
Réseaux
Bases de données
Méthodologies
Emplois High-tech
Aide juridique
Articles juridiques
FORUM
Index des forums
Ajouter un sujet
Rechercher sujet
Contact Responsable
Devenir modérateur
CHAT MP IRC
Votre pseudo ...
Serv: irc.irc-land.org
Chan: #MoteurProg
PARTICIPER
Plus de 3500 emplois.
Rechercher un job
Déposez votre CV
Emplois High-tech

Visiteur MP

 [RESOLU] [QT] Connexion signal - slot

Forum : LIBRAIRIE C++
Sous Catégorie : Aucune
Type du sujet : Sujet Normale
FAQ : FAQ LIBRAIRIE C++

SUIVI DES SUJETS PAR MAIL

SUIVI PAR MAIL INACTIF

RESOLUTION DU SUJET SUJET NON RESOLU
BLOQUAGE DU SUJET SUJET ACTIF
APPARTENANCE A LA FAQ N'APPARTIENT PAS A LA FAQ


PAGE : [1]

POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

FORUM LIBRAIRIE C++

PREMIERE PAGE

PAGE PRECEDENTE

Page précedente

Page suivante

PAGE SUIVANTE

DERNIERE PAGE
broidsy
Nouveau membre
Inscrit : 26/02/2006
Messages : 4
Message
#89180
Posté le 26/02/06 à 17:53
Bonjour,

Je voudrais faire une application qui possède plusieurs onglets (QtabWidget). J'ai conçus l'interface avec le QT Designer et j'utilise QT 4.0 . Pour rendre le code plus lisible je veux mettre le code de chaque onglet dans une classe différente.

Je n'arrive pas à connecter directement un signal de la classe principale (Form_Principale) avec un slot d'une classe (C_Tab_Projet) qui gère un onglet. Je doit passer par un slot de la classe principale ce dernier appel la fonction voulu: ce qui n'est pas très propre...
Voici le code utilise (contient que les partis qui posent problème...):

Le code de "FenetrePrincipal.hpp"

#include "TabProjet.hpp" #include "ui_Form_Principale.h" class Form_Principale : public QMainWindow { Q_OBJECT public: Form_Principale(); private: Ui::Form_Principale ui; private slots: void SlotApropos(); /* Onglet projet */ void Slot_Projet_BDR_Parcourir();/***Le slot que je voudrais ne pas avoir à utiliser***/ private: C_Tab_Projet *Tab_Projet;/***La classe qui contient le slot a appeller***/ };

Le code de "FenetrePrincipal.cpp"

#include <QtGui> #include <QDialog> #include "FenetrePrincipale.hpp" /*Constructeur par défaut*/ Form_Principale::Form_Principale(){ Tab_Projet=new C_Tab_Projet(); /** Instanciation de la classe ui.setupUi(this); } /*Création des action*/ void Form_Principale::CreerActions(){ /*** CE QUE JE VOUDRAIS FAIRE: POURQUOI CA MARCHE PAS????? ***/ //QObject::connect(ui.button_Projet_BDR_Parcourir, SIGNAL(clicked()), Tab_Projet, SLOT(Tab_Projet->BDR_Parcourir(this))); /*** celui qui marche : pas "propre"...***/ QObject::connect(ui.button_Projet_BDR_Parcourir, SIGNAL(clicked()), this, SLOT(Slot_Projet_BDR_Parcourir())); } /*** le slot que je voudrais ne pas avoir a utiliser ***/ void Form_Principale::Slot_Projet_BDR_Parcourir(){ Tab_Projet->BDR_Parcourir(this); }


Le code de "TabProjet.hpp"

#ifndef TAB_PROJET_H #define TAB_PROJET_H #include <QWidget> #include <QObject> class C_Tab_Projet: public QObject{ Q_OBJECT; public slots: void BDR_Parcourir(QWidget *); //*** le slot que je veux appeller depuis la classe principal... };


Le code de "TabProjet.cpp"

/** L'action a réaliser **/ void C_Tab_Projet::BDR_Parcourir(QWidget * parent){ QMessageBox::information(parent, "Test","Ceci est un test!"); }


D'avance merci de votre aide!!!

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Publicité
Inscrit : X
Messages : X
Message
#Aucun

HAUT DE PAGE

  

Alp
Superviseur :
- Système d'ex.
- Méthodologie.
- C & C++
Modérateur :
- Bavardages
Chef de projet(s) :
- My SDL Lib

Avatar de Alp
Inscrit : 24/06/2004
Messages : 2547
Message
#89193
Posté le 26/02/06 à 20:49
[quote]
Je n'arrive pas à connecter directement un signal de la classe principale (Form_Principale) avec un slot d'une classe (C_Tab_Projet) qui gère un onglet. Je doit passer par un slot de la classe principale ce dernier appel la fonction voulu: ce qui n'est pas très propre... [/quote]
Pourquoi tu n'arrives pas?
En mettant :
[code]connect(Form_Principale,SIGNAL(le_signal()),C_Tab_Projet,SLOT(tonSLOT()));[/code]
Cela ira.
__________________________
Be C++
[url=http://blog.mestan.fr/]Mon Blog (C++, Intelligence Artificielle, Prolog)[/url]

ERREUR BBCODE SUR CE MESSAGE :
- La valeur de la balise "quote" n'est pas correcte !

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

broidsy
Nouveau membre
Inscrit : 26/02/2006
Messages : 4
Message
#89204
Posté le 26/02/06 à 22:23
Comme il est marqué dans le premier message, dans la partie "Le code de [-i]FenetrePrincipal.cpp[/i]" à la fonction [-i]void Form_Principale::CreerActions()[/i] (le code est marqué en commentaire, celui qui marche est non commenté...), j'ai testé:
[code]QObject::connect(ui.button_Projet_BDR_Parcourir, SIGNAL(clicked()), Tab_Projet, SLOT(Tab_Projet->BDR_Parcourir(this)));[/code]

Mais ca ne marche pas: la compilation se fait avec succès, mais lorsque j'appuis sur le bouton rien ne se passe. D'où mon interrogation...

Merci quand même de s'être intéressé a mon problème!

Jai aussi testé :
[code]QObject::connect(ui.button_Projet_BDR_Parcourir, SIGNAL(clicked()), Tab_Projet, SLOT(C_Tab_Projet::BDR_Parcourir(this)));
QObject::connect(ui.button_Projet_BDR_Parcourir, SIGNAL(clicked()), Tab_Projet, SLOT(Tab_Projet::BDR_Parcourir(this)));
QObject::connect(ui.button_Projet_BDR_Parcourir, SIGNAL(clicked()), Tab_Projet, SLOT(Tab_Projet->BDR_Parcourir(this)));
QObject::connect(ui.button_Projet_BDR_Parcourir, SIGNAL(clicked()), Tab_Projet, SLOT(C_Tab_Projet.BDR_Parcourir(this)));
QObject::connect(ui.button_Projet_BDR_Parcourir, SIGNAL(clicked()), Tab_Projet, SLOT(Tab_Projet.BDR_Parcourir(this)));[/code]
Ca compile mais ne marche toujours pas ! :(:

Quand je met
QObject::connect(ui.button_Projet_BDR_Parcourir, SIGNAL(clicked()), [b][-i]C_Tab_Projet[/i][/b], SLOT(C_Tab_Projet.BDR_Parcourir(this)));
j'ai une erreur de compilation :x:

Est ce qui y a quelque chose qui ne va pas dans ma déclaration de "class C_Tab_Projet" (dans le fichier "Tab_Projet.hpp" ??? Ou autres chose???

De nouveau, merci d'avance à ceux qui voudrons prendre un peu de temps pour mon problème ! :cry:

ERREUR BBCODE SUR CE MESSAGE :
- Une balise -i n'est pas fermée !

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

broidsy
Nouveau membre
Inscrit : 26/02/2006
Messages : 4
Message
#89212
Posté le 27/02/06 à 00:47
J'ai trouvé la solution: il n'est pas possible d'avoir des paramètres dans une fonction slot.

Voici la solution pour les curieux:

QObject::connect(ui.button_Projet_BDR_Parcourir, SIGNAL(clicked()), Tab_Projet, SLOT(BDR_Parcourir()));

et

void C_Tab_Projet::BDR_Parcourir(){ QWidget * parent = 0;...}

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 
POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

PREMIERE PAGE

PAGE PRECEDENTE Page précédente

Page suivante

PAGE SUIVANTE DERNIERE PAGE

FORUM LIBRAIRIE C++



    PAGE : [1]



.: Site Web développé par Julien Pichot et l'équipe MPWG avec www.evolvia-web.com :.