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"
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 #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 "TabProjet.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
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.cpp"
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... };
D'avance merci de votre aide!!!
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!"); }
Partager