1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
| #ifndef LISTERTEMPLATE_H
#define LISTERTEMPLATE_H
#include <QFrame>
#include <QWidget>
#include <QLabel>
#include <QPushButton>
#include <QHBoxLayout>
#include <QDialog>
template<class T>
class association{
public:
typedef int Editor;
};
template<>
class association<UneClasse>{
public:
typedef UneClasseEditeur Editeur;
};
//Classe permettant de créer un module encapsulant une classe
//pour ensuite permettre son affichage
//l'affichage est composé d'un texte de présentation ou titre
//ainsi que d'un bouton modifier et supprimer
//La classe necessite que la classe cible posséde une méthode toString()
//Ainsi qu'un Editeur déclaré dans l'association
template<class T>
class Module : public QFrame{
Q_OBJECT
T& m_toDraw; //Objet représenté dans le module
QLabel* m_text; //Text représentant l'objet
QPushButton* m_delete; //Bouton modifier et supprimer
QPushButton* m_edit;
QHBoxLayout* m_mainLayout; //Layout du widget
unsigned int m_heightSizeButton;
unsigned int m_weightSizeButton;
unsigned int m_heightSize;
unsigned int m_weightSize;
public :
Module(T& toPrint,QWidget* Parent = 0, unsigned int weightSizeButton = 60, unsigned int heightSizeButton = 20, unsigned int weightSize = 560, unsigned int heightSize = 40):
m_toDraw(toPrint),QFrame(Parent),m_weightSizeButton(weightSizeButton),m_heightSizeButton(heightSizeButton),m_heightSize(heightSize),m_weightSize(weightSize){
setFrameShape (QFrame::StyledPanel);
m_text = new QLabel(toPrint.toString());
m_delete = new QPushButton("supprimer",this);
m_edit = new QPushButton("modifier",this);
m_mainLayout = new QHBoxLayout();
m_mainLayout->addWidget (m_text);
m_mainLayout->addWidget (m_delete);
m_delete->setLayoutDirection (Qt::LeftToRight);
m_delete->setFixedSize (m_weightSizeButton,m_heightSizeButton);
m_mainLayout->addWidget (m_edit);
m_edit->setLayoutDirection (Qt::LeftToRight);
m_edit->setFixedSize (m_weightSizeButton,m_heightSizeButton);
setFixedSize (m_weightSize,m_heightSize);
setLayout (m_mainLayout);
QObject::connect (m_edit,SIGNAL(clicked()),this,SLOT(modifier()));
}
public slots:
void modifier(){ //Slots du bouton modifier
typename T::Editeur* dialog = new (typename T::Editeur)(m_toDraw);
if (dialog->exec() == QDialog::Accepted) {
}
}
};
#endif // LISTERTEMPLATE_H |
Partager