Connexion "directe" signal - slot
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"
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| #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"
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| #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"
Code:
1 2 3 4 5 6 7 8 9 10 11
| #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"
Code:
1 2 3 4
| /** 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!!!