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 : 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
#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 : 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
#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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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!!!