Bonjour,

Toujours dans l'idée de validée une structure de programme pour un debutant;
Voici les trois fichiers de mon projet QtC++GestXavMedias.pro :

le fichier En-Têtes : qtgestxavmedias.h :
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
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
 
#ifndef QTGESTXAVMEDIAS_H
#define QTGESTXAVMEDIAS_H
 
#include <QPixmap>
#include <QWidget>
 
class QLabel;
class QPlainTextEdit;
class QTextEdit;
class QPushButton;
class QComboBox;
class QLineEdit;
class QTabWidget;
class QGridLayout;
class QHBoxLayout;
 
class QtGestXavMedias : public QWidget
{
    Q_OBJECT
 
public:
    QtGestXavMedias(QWidget *parent = 0);
 
protected:
    void Design();
    void AfficheFicheFilm();
    void FicheFilmAleatoire();
    void resizeEvent(QResizeEvent *event);
    void PrecedantCode();
    void SuivantCode();
 
private:
    void updateImage();
    QPixmap originalPixmap;
    QLabel *Image, *Infos, *FilmDe, *Avec, *Annee, *Pays, *Genre, *Duree, *Filtrer;
    QString MyAppDirPath, NomFicheFilm, filename, CheminFicheFilmAleatoireFilm, CheminFicheFilmAleatoireJpg,
    titre1, realisateur1, annee1, pays1, genre1, duree1, acteurs1, resume1, distrib1, comment1, titreorig1;
    QStringList listFilter, fileList;
    int NombreFilms, nbAlea, NumFiche;
    QPlainTextEdit *Titre;
    QTextEdit *Realisateur, *Acteur, *Resume, *EPays, *EGenre;
    QLineEdit *EAnnee, *EDuree;
    QTabWidget *tab;
    QGridLayout *grid, *grid2;
    QHBoxLayout *layout;
    QWidget *onglet0, *onglet1;
    QPushButton *GAuto, *DAuto, *GManu, *DManu, *Stop, *Regarder, *Changer, *Rechercher, *Ecouter, *Renseignements,
    *FilmsDe, ;
    QComboBox *Xavier, *SGenre;
};
 
#endif // QTGESTXAVMEDIAS_H
Mes deux fichiers sources:
1/ main.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
 
#include <QApplication>
#include <QIcon> // utilisé si dessous
#include "qtgestxavmedias.h"
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QtGestXavMedias w;
    w.setWindowTitle("GestXavMedias C++ 1.1"); // Titre de la fenetre
    w.setWindowIcon(QIcon(":/Ressources/R2D2.ico")); // Icone de la fenetre declaré dans le fichier resource
    w.show();
 
    return a.exec();
}
2/ qtgestxavmedias.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
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
 
#include "qtgestxavmedias.h"
#include <QtGui> // pour inclure tout les composants
// (ralenti l'application, on peut declarer les composants utilisés un par un)
 
QtGestXavMedias::QtGestXavMedias(QWidget *parent)
    : QWidget(parent)
 
{
MyAppDirPath =  QCoreApplication::applicationDirPath();
FicheFilmAleatoire();
QObject::connect(GManu, SIGNAL(clicked()), qApp, SLOT(PrecedantCode()));
QObject::connect(DManu, SIGNAL(clicked()), qApp, SLOT(SuivantCode()));
}
void QtGestXavMedias::Design()
{
    tab = new QTabWidget(); // widget (composant) classeur que l'on va installer dans la fenetre
    grid = new QGridLayout; // widget grille pour disposer les differents composants
    grid2 = new QGridLayout; // widget grille pour disposer les differents composants
    layout = new QHBoxLayout; // l'interieur de la fenetre
    layout->addWidget(tab); // on installe le classeur a l'interieur de la fenetre
    onglet0 = new QWidget(); // ce classeur a un onglet 0
    onglet1 = new QWidget(); // et un onglet 1
    onglet0->setLayout(grid); // dans l'onglet 0 on installe le composant grille pour placer les differents widgets
    onglet1->setLayout(grid2); // dans l'onglet 0 on installe le composant grille pour placer les differents widgets
    tab->addTab(onglet0, tr("&FicheFilms")); // on donne un titre a l'onglet tr() pour traduction futur
    tab->addTab(onglet1, tr("&Moviecovers")); // on donne un titre a l'onglet tr() pour traduction futur
    Image = new QLabel; // on va mettre une image ds un Qlabel
    grid->addWidget(Image, 0, 0, 7, 3); //position dans la grille 0,0 (tout en haut a gauche) 7 lignes en hauteur, 3 colonnes en largeur
    grid->addWidget(Titre, 0, 3, 1, 9); // position dans la grille 0,3 (en haut,3 colonnes vers la droite) 1 ligne en hauteur, 9 colonnes en largeur
    Infos = new QLabel("Infos"); // on ecrit Infos dans une etiquette (tr(): pour la traduction)
    Infos->setFont(QFont("Lucida Handwriting", 18,QFont::Black)); // Gestion de la police de caractere
    grid->addWidget(Infos,1, 3, 1, 9); // Placement ds la grille (voir plus haut)
    FilmDe = new QLabel(tr("Un Film de :"));// on ecrit Un Film de : dans une etiquette (tr(): pour la traduction)
    grid->addWidget(FilmDe,2, 3, 1, 9); // Placement ds la grille (voir plus haut)
    grid->addWidget(Realisateur, 3, 3, 1, 9);
    Avec = new QLabel(tr("Avec :"));
    grid->addWidget(Avec,4, 3, 1, 9);
    grid->addWidget(Acteur, 5, 3, 1, 9);
    grid->addWidget(Resume, 6, 3, 3, 9);
    Annee = new QLabel(tr("Année :"));
    grid->addWidget(Annee,7, 0, 1, 1);
    grid->addWidget(EAnnee, 8, 0, 1, 1);
    Pays = new QLabel(tr("Pays :"));
    grid->addWidget(Pays,7, 1, 1, 1);
    grid->addWidget(EPays, 8, 1, 1, 2);
    Genre = new QLabel(tr("Genre :"));
    grid->addWidget(Genre,9, 0, 1, 1);
    grid->addWidget(EGenre, 10, 0, 1, 2);
    Duree = new QLabel(tr("Durée :"));
    grid->addWidget(Duree,9, 2, 1, 1);
    grid->addWidget(EDuree, 10, 2, 1, 1);
    GAuto = new QPushButton("<-"); // mise en place d'un bouton
    grid->addWidget(GAuto,10, 3, 1, 1);
    GAuto->setCursor(Qt::PointingHandCursor); // une main s'affiche quand la sourie pointe le bouton
    GManu = new QPushButton("<-"); // mise en place d'un bouton
    GManu->setToolTip("Precedant");
    grid->addWidget(GManu,11, 3, 1, 1);
    GManu->setCursor(Qt::PointingHandCursor); // une main s'affiche quand la sourie pointe le bouton
    Stop = new QPushButton(tr("Stop"));
    grid->addWidget(Stop,10, 4, 1, 1);
    Stop->setCursor(Qt::PointingHandCursor); // une main s'affiche quand la sourie pointe le bouton
    DAuto = new QPushButton("->");
    grid->addWidget(DAuto,10, 5, 1, 1);
    DAuto->setCursor(Qt::PointingHandCursor); // une main s'affiche quand la sourie pointe le bouton
    DAuto->setIcon(QIcon(":/Ressources/R2D2.ico")); // met l'icone r2d2 sur le bouton
    DManu = new QPushButton("->");
    DManu->setToolTip("Suivant");
    grid->addWidget(DManu,11, 5, 1, 1);
    DManu->setCursor(Qt::PointingHandCursor); // une main s'affiche quand la sourie pointe le bouton
    Regarder = new QPushButton(tr("Regarder"));
    grid->addWidget(Regarder,10, 6, 1, 1);
    Regarder->setCursor(Qt::PointingHandCursor); // une main s'affiche quand la sourie pointe le bouton
    Changer = new QPushButton(tr("Changer"));
    grid->addWidget(Changer,10, 7, 1, 1);
    Changer->setCursor(Qt::PointingHandCursor); // une main s'affiche quand la sourie pointe le bouton
    Rechercher = new QPushButton(tr("Rechercher"));
    grid->addWidget(Rechercher,10, 8, 1, 1);
    Rechercher->setCursor(Qt::PointingHandCursor); // une main s'affiche quand la sourie pointe le bouton
    Ecouter = new QPushButton(tr("Ecouter Resumé"));
    grid->addWidget(Ecouter,10, 9, 1, 2);
    Ecouter->setCursor(Qt::PointingHandCursor); // une main s'affiche quand la sourie pointe le bouton
    Renseignements = new QPushButton(tr("Renseignements"));
    grid->addWidget(Renseignements,10, 11, 1, 1);
    Renseignements->setCursor(Qt::PointingHandCursor); // une main s'affiche quand la sourie pointe le bouton
    FilmsDe = new QPushButton(tr("Films de :"));
    grid->addWidget(FilmsDe,11, 6, 1, 1);
    FilmsDe->setCursor(Qt::PointingHandCursor); // une main s'affiche quand la sourie pointe le bouton
    Xavier = new QComboBox;
    Xavier->addItem("Xavier");
    grid->addWidget(Xavier,11, 7, 1, 2);
    Filtrer = new QLabel(tr("Filtrer :"));
    grid->addWidget(Filtrer,11, 9, 1, 1);
    SGenre = new QComboBox;
    grid->addWidget(SGenre,11, 10, 1, 2);
    setLayout(layout); // pour afficher tout ci-dessus?
}
 
void QtGestXavMedias::AfficheFicheFilm()
{
originalPixmap = QPixmap (CheminFicheFilmAleatoireJpg);
filename = CheminFicheFilmAleatoireFilm;
QFile fichier(filename);
fichier.open(QIODevice::ReadOnly | QIODevice::Text);
QTextStream flux(&fichier);
titre1 = flux.readLine();
realisateur1 = flux.readLine();
annee1 = flux.readLine();
pays1 = flux.readLine();
genre1 = flux.readLine();
duree1 = flux.readLine();
acteurs1 = flux.readLine();
resume1 = flux.readLine();
distrib1 = flux.readLine();
comment1 = flux.readLine();
titreorig1 = flux.readLine();
Titre = new QPlainTextEdit(titre1);
Realisateur = new QTextEdit(realisateur1);
Acteur = new QTextEdit(acteurs1);
Resume = new QTextEdit(resume1);
EAnnee = new QLineEdit(annee1);
EPays = new QTextEdit(pays1);
EGenre = new QTextEdit(genre1);
EDuree = new QLineEdit(duree1);
Design();
}
 
void QtGestXavMedias::FicheFilmAleatoire()
{
listFilter << "*.film";
QDirIterator dirIterator((MyAppDirPath + "/Xavier"), listFilter ,QDir::Files | QDir::NoSymLinks, QDirIterator::Subdirectories);
// On déclare un QDirIterator dans lequel on indique que l'on souhaite parcourir un répertoire et ses sous-répertoires.
// De plus, on spécifie le filtre qui nous permettra de récupérer uniquement les fichiers du type souhaité.
while(dirIterator.hasNext()) // Tant qu'on n'est pas arrivé à la fin de l'arborescence...
 {
     dirIterator.next();
     fileList << dirIterator.fileName();
 }
fileList.replaceInStrings(".film",""); // on supprime l'extension .film
NombreFilms = fileList.count(); // on compte le nombre de fichiers extrait
qsrand( QDateTime::currentDateTime().toTime_t() );
nbAlea = (qrand() % NombreFilms);
NomFicheFilm = fileList.at(nbAlea);
CheminFicheFilmAleatoireFilm = (MyAppDirPath + "/Xavier/" + NomFicheFilm + ".Film");
CheminFicheFilmAleatoireJpg = (MyAppDirPath + "/Xavier/" + NomFicheFilm + ".Jpg");
NumFiche = nbAlea;
AfficheFicheFilm();
}
 
void QtGestXavMedias::PrecedantCode()
{
  if (NumFiche>0)
  {
   NumFiche= NumFiche-1;
   NomFicheFilm = fileList.at(NumFiche);
   CheminFicheFilmAleatoireFilm = (MyAppDirPath + "/Xavier/" + NomFicheFilm + ".Film");
   CheminFicheFilmAleatoireJpg = (MyAppDirPath + "/Xavier/" + NomFicheFilm + ".Jpg");
  }
  AfficheFicheFilm();
}
void QtGestXavMedias::SuivantCode()
{
  if (NumFiche<NombreFilms)
  {
   NumFiche= NumFiche+1;
   NomFicheFilm = fileList.at(NumFiche);
   CheminFicheFilmAleatoireFilm = (MyAppDirPath + "/Xavier/" + NomFicheFilm + ".Film");
   CheminFicheFilmAleatoireJpg = (MyAppDirPath + "/Xavier/" + NomFicheFilm + ".Jpg");
  }
  AfficheFicheFilm();
}
void QtGestXavMedias::resizeEvent(QResizeEvent * /* event */) //sous programme dimension image en fonction de QLabel
{
 
    QSize scaledSize = originalPixmap.size();
    scaledSize.scale(Image->size(), Qt::KeepAspectRatio);
    if (!Image->pixmap()
            || scaledSize != Image->pixmap()->size())
        updateImage();
}
void QtGestXavMedias::updateImage() // sous prog appelé ci-dessus
{
 
    Image->setPixmap(originalPixmap.scaled(Image->size(),
                                                     Qt::KeepAspectRatio,
                                                     Qt::SmoothTransformation));
    // en gardant les proportions, redimensionner l'image pour les dimensions du label
}
le fichier ressources (QtGestXavMedias.qrc) contenant le chemin :
Ressources/R2D2.ico

- Est-ce que je n'ai pas fait de fautes de declarations ou d'écritures (Fichier d'en-têtes, main, qtgestxavmedias.cpp)?

-pourquoi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
QObject::connect(GManu, SIGNAL(clicked()), qApp, SLOT(PrecedantCode()));
QObject::connect(DManu, SIGNAL(clicked()), qApp, SLOT(SuivantCode()));
ne fonctionne pas ?
ce code n'est qu'un test mais dans ce qui est ecrit, qu'est-ce que je peux ameliorer ?
Cordialement